Skip to content

Instantly share code, notes, and snippets.

@dmjio
Last active August 13, 2021 18:18
Show Gist options
  • Save dmjio/8f19a163048331d04fd9d4f0c2d07670 to your computer and use it in GitHub Desktop.
Save dmjio/8f19a163048331d04fd9d4f0c2d07670 to your computer and use it in GitHub Desktop.

Haskell Survey

Proficiency scale

  1. Not aware of the feature/concept/package in question, what it is or when to use it. Reading the description of this feature/concept/package is the first time I've heard of it.
  2. Have heard of said feature/concept/package, vaguely familiar with usage, not familiar with implementation.
  3. Moderate usage, familiar with best practices, have used in personal projects or on the job.
  4. Used feature/concept/package heavily, know when to use, advanced understanding.
  5. Commanding understanding of the feature/concept/package, comprehensive knowledge of trade-offs to make with said feature/concept/package. She knows when not to use it, expert level understanding and familiarity with implementation, can create pedagoical implementation where/if applicable.

Interest scale

  1. Not at all interested
  2. Mild interest
  3. Moderately interested
  4. Very interested
  5. Intensely interested

Exceptions

Async vs. Sync exceptions. MonadExcept. 'try', 'catch', 'bracket', 'finally', pure vs. impure exceptions.

Monad transformers

'StateT', 'ReaderT', 'MonadTrans'
'mtl', 'transformers', 'monadLib'

Lenses

 'lens', 'microlens', 'optics'

Meta-programming

'TemplateHaskell', 'QuasiQuotation', 'GHC.Generics', 'DefaultSignatures', generic deriving
'DerivingVia', 'DerivingStrategies', 'DerivingAnyClass'

Type-level programming

'PolyKinds', 'DataKinds', 'TypeInType', 'GHC.TypeLits', kinds, constraint kinds.

Package management

'Cabal' the library, 'cabal' the executable, 'stack', 'stackage', 'runghc', 'haskell.nix'
Package authoring, package releasing to hackage

Documentation

'haddock'

Concurrency

'IORef', 'STM', 'MVar', 'Chan', 'async', OS threads vs. green threads.

Haskell space leak detection

Debugging, stack / heap profiling, laziness, profiteur

Testing

Property-based testing
'hspec', 'quickcheck', 'hedgehog'

Web

'servant', 'yesod', 'scotty', 'http-client', 'wreq'

Data structures

'Seq', 'HashMap', 'Map', 'HashTable', 'Vector', 'Array', 'Linked List'

JSON

'aeson'

Benchmarking

'criterion', 'bench'

Typeclasses

'Applicative', 'Monad', 'Arrow', 'Functor', 'Category', 'Semigroup', 'Monoid', 'Foldable', 'Traversable' etc.

Strings

'String', 'bytestring', 'text'
fusion, representation, unboxing / unpacking, etc.

Syntax

'let' .. 'in', 'do', 'lambdas', 'gauard', 'case' 'of', prefix vs. infix.
'ViewPatterns', 'PatternSynonyms', 'TypeApplications', 'QualifiedDo'

Streaming

Lazy I/O, 'streamly', 'streaming', 'io-streams'

IDEs

haskell-mode emacs, vim, language server protocol (LSP), Visual Studio Code

Performance

'INLINE' vs. 'SPECIALIZE', 'UNPACK'

Parsing

'parsec', 'megaparsec', 'alex', 'happy'

FFI

Interfacing with C libraries ('ForeignPtr', 'Ptr', 'StablePtr', 'Storable' ('peek', 'poke'))
'hsc2hs', 'c2hs'

Database

'postgresql-simple', 'sqlite-simple', 'orville', 'resource-pool'

Effect systems

'eff', 'fused-effects', 'polysemy'

Numeric hierarchy

    'Num', 'Integral', 'Fractional', 'Floating', etc.

GHC internals

    The 'GHC' API, `ghc-lib`, IRs ('AST', 'Core', 'STG', 'Cmm', 'LLVM', 'x86'), RTS, GC, etc.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment