The following post is part of Spoke Proof. Tell your friends.
The Grand March 2017 Links Roundup
streaming is a Haskell package with a manifesto. The author presents a strong argument for modeling streaming as a compiler-friendly version of FreeT
, the free-monad transformer.
Somewhat of a golden age of profunctors is happening among Haskell weblogs. We have “Profunctors, Arrows, & Static Analysis”, “Monoids on Steroids”, and “Addressing Pieces of State with Profunctors”.
Kmett’s answer on “Today, I used laziness for…” reaches some sort of ecstatic plane for /r/haskell commenting and leads the reader down a rabbit hole of “close the circle”-type lazy programming. See also: “Water collected between towers” and the solution with Control.Monad.Tardis
. h/t doug
“An algebra of graphs” is now an ICFP paper!
“A case of reflection” is a tutorial on introducing runtime information through compiletime superclass constraints with the all-star reflection
package.
Exploring the Curry-Howard correspondence in Dhall.
Join points have landed in GHC 8, leading to impressive gains in allocation benchmarks. For more information, see SPJ’s talk on demystifying GHC Core at around minute 50 or read “Compiling without continuations”.
“Derivable Type Classes” is an old Hinze and SPJ paper that proposes a what-if for generic programming that never came to be:
class Eq a where
(==) :: a -> a -> Bool
(==){1} Unit Unit = True
(==){a + b} (Inl x) (Inl y) = x == y
(==){a + b} (Inr x) (Inr y) = x == y
(==){a + b} _ = False
(==){a * b} (x :*: y) (z :*: w) = x == z && y == w
sheyll/type-spec is an insane type-level test framework.