prev (30) slide 31 / 33 next (32)
but haskell is still rad
Most benefits are invisible. If I had done this in python / common lisp /
whatever I'd wind up with a completely different design.
- laziness - Derivation is all lazy.
- monads - Pass actions to UI as
IO (), collect a list of
[CmdT] before execution, manipulate unevaluated derivers as
[DeriveT m [Score.Event]], etc.
- syntax - Just about never gets in my way. Easy function definitions
change everything.
Currying + ($) + do = instant custom control structures without even
trying.
- lock free - Multi threaded program, but haven't had a threading bug yet.
- alias free - Haven't had any of those bugs either.
- explicit state - All state in Ui.State and Cmd.State. Nothing dangling
anywhere.
- ghci - Rapidly iterate on tests, especially since compilation is so slow.
I tend to type
:r at the prompt instead of
make build/seq!
- hint / ghc api - Extend the program on the fly, also handy for debugging.
- fun with types - Liberal use of newtypes, Signal phantom types, and I hope
to do something more advanced some day...
- heap compiler - Makes neat graphs! Apparently can work in realtime!
- fun! - I'm a composer, so I like to compose while I compose.
prev (30) slide 31 / 33 next (32)