The Haskell language
TidalCycles is a domain-specific language embedded in (made with) the Haskell programming language. Haskell is a general-purpose, statically typed and purely functional programming language. Haskell had always been used, since its creation, by researchers/teachers, industrials, finance, etc… Haskell is renowned for some of its most distinctive features: type classes, insistance on the purely-functional programming paradigm, elegant syntax.
Haskell can be compiled or interpreted. The Glasgow Haskell Compiler (a.k.a GHC) is the most widely used implementation. Tidal is using GHCI, the interpreted mode of GHC as a REPL to do conversational programming with the Tidal library. The text editor you are using when playing with Tidal acts as a “code-formatter” and “emitter”, sending lines and statements directly to the Haskell interpreter.
Haskell is sometimes considered to be a difficult language for newcomers. In reality, the situation is more complex than it appears. Haskell can confuse some programmers that are accustomed to another programming paradigm: imperative, object-oriented, etc… However, if you don’t know anything about programming yet, Haskell can be a wonderful language to learn.
Resources
General
Many Haskell tutorials are focusing on lists. They are important to learn, but are not very often used in Tidal.
- Haskell study plan
- Learn Haskell in Y minutes
- Learn you a Haskell for great good
- Haskell school of expression book (.pdf of earlier version)
- Functors, applicatives and monads in pictures
- Haskell programming from first principles - an in-depth book for beginners
- Programming in Haskell - another nice book, by Graham Hutton
- How to read Haskell - A primer for learning how to work out yourself ‘what does this function do?‘
- Haskell programming from first principles - by Christopher Allen and Julie Moronuki
Tidal-related
NIL Haskell school - video lectures by David Ogborn (not tidal-specific but by David who among other things works on Tidal and related projects)