Chris Frisz

TCO

Tail-call optimization (TCO) allows programmers to write interesting tail-recursive functions without worry of overflowing the program's stack memory. In languages that require constant space tail calls (i.e. Scheme and Standard ML), recursion becomes a natural and efficient way to express iteration. In this talk we discuss a method to extend Clojure's TCO support for arbitrary mutual recursion via well-known code transformations including CPS and trampolining, and how these transformations enable more succinct and clear programming. We also examine a source-to-source compiler that applies these transformations, having minimal impact on the performance of the generated code and allowing interoperability with non-CTCO Clojure programs.

About the Speaker

Chris Frisz obtained both his B.S. and M.S. in Computer Science from Indiana University Bloomington. During his time at IU, he focused on programming languages research, including work on algorithmically identifying malicious ad-related JavaScript behavior and enabling tail-call optimization in the Clojure language working with Dan Friedman. Chris currently resides near Raleigh, North Carolina working as a Compiler Engineer at Cisco Systems, Inc.