Haskell » History » Revision 37

Revision 36 (Grigoriy Volkov, 07/03/2019 02:09 PM) → Revision 37/87 (Alexey Demakov, 07/06/2019 08:11 PM)

h1. Haskell

h2. Изучение

Денис Москвин. Функциональное программирование на языке Haskell., видеокурс
> "Часть 1.":
> "Часть 2.":

"О Haskell по-человечески":
"Learn You a Haskell for Great Good!":
"Real World Haskell by Bryan O'Sullivan, Don Stewart, and John Goerzen":

"ru.haskell— сообщество русскоговорящих Haskell-разработчиков":
> "Полезные ссылки":

"ru.haskell wiki":
> "Настройка редакторов для поддержки Haskell":

"Haskell Cheatsheet":
"Stack cookbook":

h2. snippets

* [[HaskellMaybeChecks]]
* [[HaskellTypeLevelMachine]]

h2. ghci debugging

:set -fbreak-on-error -fbreak-on-exception
:trace machineMain
:force _exception

h2. libs

* "co-log":
* "named": arguments
* "concat": ("z3cat": || "smt example": — *"Compiling to categories":* — compiler plugin for translating normal Haskell functions (on standard types) to SMT, etc.
* "SBV: SMT Based Verification": — translates Haskell functions on custom symbolic types
* "refined": — refinement types <pre>type ProperFraction = Refined (And (Not (LessThan 0)) (Not (GreaterThan 1))) Double</pre>
* "hedgehog": — random test gen (QuickCheck)
* "dejafu": — concurrency testing
* "GHC.Stack": — can get code position for DSL
* "Data.Sequence": — list with fast append on both sides
* "bound: Making de Bruijn Succ Less": — convenient combinators for working with "locally-nameless" terms. These can be useful when writing a type checker, evaluator, parser, or pretty printer for terms that contain binders like forall or lambda
* Constraints:
* HKD:

h2. exts

* "Existential Quantification":
* "RebindableSyntax": — overloading built-in operators / do notation
* "NullaryTypeClasses": — global implementation of one thing
* "DataKinds": , TypeFamilies (+ GHC.TypeLits) — type-level annotations
** "Basic Type Level Programming in Haskell":
** "Parsing type-level strings in Haskell":
** "Servant, Type Families, and Type-level Everything":
** "Haskell Type Names as Strings":

h2. other

* "ST Monad": for imperative algorithms
* "A Rosetta Stone for Haskell Abstractions": Applicative, StateT, Lens
* "Is it possible to place inequality constraints on haskell type variables?":
* "Practical uses of the Tardis monad?: 'build a packet ... where the fixed-length lengths and offsets of some variable length data are sent out before the actual data themselves'":
* "Comonadic builders":
* "Tagless Final Encoding in Haskell":
"Typed final (aka, ``tagless-final'') style": is a general method of embedding domain-specific languages (DSL)
* "Control.Monad.Trans.Cont": / "CC-delcont": / "Delimited continuations in Haskell": / "A Monadic Framework for DelimitedContinuations":
* "Haskell's continuation monad":
* "GHC's Specializer: Much More Than You Wanted to Know":
* "Type Classes and Constraints":
* "Overloading lambda":
* TypeFamilies:
** "Associated Types and Haskell":
** "Partially applied type families GHC Proposal":
** "On the arity of type families": + "Higher-order Type-level Programming in Haskell":
** "Type Class Instances for Type-Level Lambdas in Haskell":
** "Defunctionalization for Haskell Type Families":
** "Haskell with only one type family":
* HKD:
** "Functor Functors":
** "Higher-Kinded Data":
** "Deriving instances for higher-kinded data":