Jason Ganetsky on Making a Fast Curry: Push/Enter vs. Eval/Apply for Higher-order Languages

New York - June 23, 2015

Jason Ganetsky on Making a Fast Curry: Push/Enter vs. Eval/Apply for Higher-order Languages

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.


TwoSigma The New York Chapter would like to thank TwoSigma for helping to make this meetup possible.