J. Garrett Morris

Learn More
Type classes have found a wide variety of uses in Haskell programs, from simple overloading of operators (such as equality or ordering) to complex invariants used to implement type-safe heterogeneous lists or limited subtyping. Unfortunately, many of the richer uses of type classes require extensions to the class system that have been incompletely described(More)
In 2 experiments participants solved division problems presented in multiplication-based formats (e.g., 8 x _ = 72) more quickly than division problems presented in division-based formats (e.g., 72 / 8 = _). In contrast, participants solved multiplication problems presented in a division-based format (e.g., _ / 8 = 9) slowly and made many errors. In both(More)
Recently, Wadler presented a continuation-passing translation from a session-typed functional language , GV, to a process calculus based on classical linear logic, CP. However, this translation is one-way: CP is more expressive than GV. We propose an extension of GV, called HGV, and give translations showing that it is as expressive as CP. The new(More)
Session types describe communication protocols, capturing both the type and the order of messages. Recently, we presented a semantics for a core session-typed linear λ-calculus, GV, and proved that it enjoys a number of desirable properties beyond type sound-ness, including deadlock freedom, determinism (and hence race freedom), and termination. In this(More)