University of Cambridge > Talks.cam > Computer Laboratory Programming Research Group Seminar > Haskell is Not Not ML

Haskell is Not Not ML

Add to your list(s) Download to your calendar using vCal

If you have a question about this talk, please contact Boris Feigin.

In this talk I’ll describe a simple intermediate language which is useful for modeling the semantics of strict and non-strict variants of ML and also for compiling them to efficient machine code. The language (“IL”) is similar to core ML, but with continuations (logical negation) instead of functions (logical implication). IL is non-classical (T and ¬¬T are different types, for example), and classically equivalent types in IL turn out to model different forms of non-termination in ML —in particular, “Haskell” (non-strict) types are the double negation of “ML” (strict) types. IL can be compiled to efficient machine code in such a way that “ML” values have the same in-memory representation as fully-evaluated “Haskell” values, so IL can be used to compile ML and Haskell programs to a common virtual machine within which ML data can be passed to Haskell code at no cost and Haskell data can be passed to ML code with only the cost of a Haskell deepSeq.

This talk is part of the Computer Laboratory Programming Research Group Seminar series.

Tell a friend about this talk:

This talk is included in these lists:

Note that ex-directory lists are not shown.

 

© 2006-2019 Talks.cam, University of Cambridge. Contact Us | Help and Documentation | Privacy and Publicity