Discussion Notes - ahri/lazymanc.net GitHub Wiki

Notes on discussion of chapters covered:

  1. All You Need is Lambda
    • Divergence - does this represent an invalid Haskell program?
      • It can be thought of as a "program gone wrong" in the sense that it does not produce a meaningful value. It's used to allow for semantic correctness when dealing with potentiall infinite computations. It is however meaningful in the context of lazy haskell as we sometimes pass around computations over infinite data structures.
    • System FC - the intermediate language that Haskell compiles to, a typed lambda calculus; could this be a portable bytecode of sorts or is it just for optimization? For further investigation
    • When passing in a lambda with a free variable during beta reduction, what does that mean? In Haskell it would be a scope-captured variable, but scopes don't appear to exist in lambda calculus
    • Haxl, a library used by Facebook, was mentioned. Here's the original paper and here's a recent conference video about it.
    • The Y-Combinator was discussed as a way to recurse when you don't have a function name to call in the body (since all lambda functions are anonymous) - For further investigation
  2. Types
    • We don't really understand why:
      kessel :: (Ord a, Num b) => a -> b -> a ; kessel = undefined
      :t kessel 1 2 -- kessel 1 2 :: forall a. (Num a, Ord a) => a
      
      but on GHC 8.2
      kessel 1 2 :: forall a. (Num a) => a
      
  3. Misc