Phil Trinder
algorithm algorithms functional programming functional programming languages functional theorem proving generic programming haskell programming higher-order functional programs programming programming languages implementation type systems