Jason Ganetsky on Making a Fast Curry: Push/Enter vs. Eval/Apply for Higher-order Languages
Meetup: http://bit.ly/1DuZQCb
Paper: http://bit.ly/1gOp7mb
Slides: http://bit.ly/1KkZlzL
Audio: http://bit.ly/1RQJW0O
-------------------------------------------------------------------------------------
Sponsored by Two Sigma (@twosigma), The Ladders (@TheLaddersDev).
-------------------------------------------------------------------------------------
Description
------------------
Higher-order languages that encourage currying are typically implemented using one of two basic evaluation models: push/enter or eval/apply. Implementors use their intuition and qualitative judgements to choose one model or the other. Our goal in this paper is to provide, for the first time, a more substantial basis for this choice, based on our qualitative and quantitative experience of implementing both models in a state-of-the-art compiler for Haskell.
Our conclusion is simple, and contradicts our initial intuition: compiled implementations should use eval/apply.
Bio
-----
Jason Ganetsky (@ganetsky) is a software engineer at Google. He is tech lead of storage for Google Cloud Pub/Sub. Prior to working at Google, Jason worked at various startups in NYC, and was briefly enrolled in a Computer Science PhD program at Carnegie Mellon. It was that brief stint that sparked the beginning of Jason's lifelong love of functional programming and type systems.