Research

My research interests lie mostly in the field of programming languages, particularly in functional programming and (static) type systems.  This page lists the research projects that I have worked on.

Type Inference for Generalized Algebraic Data Types

Practical Type Inference for the GADT Type System [Dissertation, SlidesImplementation]
Chuan-kai Lin, Doctoral Dissertation, Portland State University, 2010.

Pointwise Generalized Algebraic Data Types [Paper, Slides]
Chuan-kai Lin and Tim Sheard, TLDI 2010.
© ACM, (2010).  This is the author's version of the work.  It is posted here by permission of ACM for your personal use.  Not for redistribution.  The definitive version was published in Proceedings of the 5th ACM SIGPLAN Workshop on Types in Language Design and Implementation, January 2010.  http://doi.acm.org/10.1145/1708016.1708024

Infopipes

The Infopipes project aims to develop a programming abstraction that puts data flow properties (such as latency and buffering) at the forefront.  In this project, I investigated how control flow relates to data flow in object-oriented programming, and I designed the DirectFlow language that abstracts over the distinction of push-communication and pull-communication between objects.

DirectFlow: A Domain-Specific Language for Information-Flow Systems
[Paper, Slides]
Chuan-kai Lin and Andrew P. Black, ECOOP 2007.

Monadic Programming

In Haskell, monads are a great way to build an embedded language with a domain-specific semantics.  The standard Haskell approach to defining monads is denotational; it requires programmers to build each monad from scratch and does not enforce the monad laws.  The Unimo framework takes a different approach: it provides a basic fabric that enforce the monad laws, and programmers define a new monad by describing its basic effects in the style of operational semantics.

Programming Monads Operationally with Unimo [Paper, Slides]
Chuan-kai Lin, ICFP 2006.
© ACM, (2006).  This is the author's version of the work. It is posted here by permission of ACM for your personal use.  Not for redistribution.  The definitive version was published in Proceedings of the 11th ACM SIGPLAN International Conference on Functional Programming, September 2006.  http://doi.acm.org/10.1145/1160074.1159840