Polyglot or poly-not?
I discovered a neat pattern: using join with the function arrow ((-)) as a Monad. When you join over functions, you get: This lets you pass the same argument twice: once to determine what to do, and another to actually do it. In , we have validators with the signature type Validator = input - Validation. Most of our validation helpers are written in a point-free, un-applied style, which works great, except recently when I needed to inspect the input to decide which validator to run.
It's all about the types
A walkthrough of a Haskell development environment built on NixOS, Vim, GHCid, and Hoogle. Covers the Nix and Cabal setup, fast compiler feedback with GHCid, testing with hspec, and documentation lookups, all prioritizing simplicity and locally contained tooling.