Alexander Altman

Hi! I’m Alexander Altman, also known as Ptharien’s Flame. I’m an avid typed-functional programmer, and I especially enjoy working in Haskell, Agda, Rust, and Ceylon. I also do some work in Swift, and am a founding member of the TypeLift project.

  • Guide to GHC Extensions

    **A guide to the wide variety of Haskell extensions available in GHC, aimed at people who know most of the Standard Haskell core.** The extensions which are currently covered are: - [`BangPatterns`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/pattern-and-guard-extensions#bangpatterns) - [`BinaryLiterals`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#binaryliterals) - [`DatatypeContexts`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/data-type-extensions#datatypecontexts) - [`DoAndIfThenElse`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#doandifthenelse) - [`DoRec`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#recursivedo-and-dorec) - [`EmptyCase`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#emptycase) - [`EmptyDataDecls`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/data-type-extensions#emptydatadecls) - [`ExistentialQuantification`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/data-type-extensions#existentialquantification) - [`ExplicitForAll`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/explicit-forall#explicitforall) - [`GADTs`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/data-type-extensions#gadts) - [`GADTSyntax`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/data-type-extensions#gadtsyntax) - [`Haskell98`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/language-standards#haskell98) - [`Haskell2010`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/language-standards#haskell2010) - [`LambdaCase`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#lambdacase) - [`LiberalTypeSynonyms`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/explicit-forall#liberaltypesynonyms) - [`MonadComprehensions`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/list-and-comprehension-extensions#monadcomprehensions) - [`MultiWayIf`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#multiwayif) - [`NegativeLiterals`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#negativeliterals) - [`NPlusKPatterns`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/pattern-and-guard-extensions#npluskpatterns) - [`NondecreasingIndentation`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#nondecreasingindentation) - [`NumDecimals`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#numdecimals) - [`OverloadedLists`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/list-and-comprehension-extensions#overloadedlists) - [`OverloadedStrings`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#overloadedstrings) - [`PackageImports`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#packageimports) - [`ParallelListComp`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/list-and-comprehension-extensions#parallellistcomp) - [`PatternGuards`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/pattern-and-guard-extensions#patternguards) - [`PatternSignatures`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/pattern-and-guard-extensions#patternsignatures) - [`PatternSynonyms`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/pattern-and-guard-extensions#patternsynonyms) - [`PolymorphicComponents`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/explicit-forall#rankntypes--rank2types--and-polymorphiccomponents) - [`PostfixOperators`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#postfixoperators) - [`Rank2Types`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/explicit-forall#rankntypes--rank2types--and-polymorphiccomponents) - [`RankNTypes`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/explicit-forall#rankntypes--rank2types--and-polymorphiccomponents) - [`RecursiveDo`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#recursivedo-and-dorec) - [`ScopedTypeVariables`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/explicit-forall#scopedtypevariables) - [`TransformListComp`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/list-and-comprehension-extensions#transformlistcomp) - [`TupleSections`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#tuplesections) - [`UnicodeSyntax`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/basic-syntax-extensions#unicodesyntax) - [`ViewPatterns`](https://www.schoolofhaskell.com/user/PthariensFlame/guide-to-ghc-extensions/pattern-and-guard-extensions#viewpatterns) The following extensions will probably never be covered (usually because they were deprecated and/or removed from GHC sufficiently long ago): - `AlternativeLayoutRule` - `AlternativeLayoutRuleTransitional` - `Generics` - `JavascriptFFI` - `MonoPatBinds` - `NewQualifiedOperators` - `RelaxedLayout` - `SafeImports` Most of the information these tutorials present is derived from [the relevant chapter of the GHC User’s Guide](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ghc-language-features.html), as well as selected parts of [the GHC source code](https://github.com/ghc/ghc).