Photo of Chuan-kai Lin

Chuan-kai Lin / 林川凱

Chuan-kai Lin,
Department of Computer Science
Portland State University
P.O. Box 751
Portland, Oregon 97207–0751

Email: cklin@cs.pdx.edu
Web: http://web.cecs.pdx.edu/~cklin/
PGP: 0xDD0F6268
Background: resume

I am a PhD candidate in the Computer Science Department of the Portland State University. I received bachelor's degrees in Mathematics and Computer Science & Information Engineering from the National Taiwan University in 2001. I am also an official developer of the Debian Project.


Research Projects

My research interests include the design of domain-specific programming languages and all aspects of statically typed functional programming (type systems, language design, semantics, programming techniques, and applications). Here are my current and past research projects.

Pointwise Generalized Algebraic Data Types

The Pointwise GADT type system is a restricted version of the GADT type system that uses pointwise unifiers to regulate type-information flow in patterns. Pointwise GADTs are expressive enough for practical programming, but rejects functions with particularly unconstrained sets of types.

This research work is conducted under the supervision of Professor Tim Sheard.

Domain-Specific Languages for Infopipes

Infopipes is a programming framework that allows a programmer to build an information flow application by composing a set of pre-built components (also called Infopipes). I am designing two domain-specific languages, DirectFlow and InterFlow, that enables programmers to define the data flows between Infopipes without explicitly specifying the control flow interactions between them. The following publication is associated with this work:

DirectFlow: A Domain-Specific Language for Information-Flow Systems [PDF]
Chuan-kai Lin, Andrew P. Black. ECOOP 2007 - Object-Oriented Programming, LNCS 4609, pages 299–322. August 2007, Berlin, Germany. This paper presents the DirectFlow embedded domain-specific language which allows programmers to define an information-flow pipe without specifying how it exchanges information through push or pull. A compiler statically infers the missing push—pull information and generates corresponding pipe objects, which programmers can compose into pipelines with the help of a runtime system.

This research work is conducted under the supervision of Professor Andrew P. Black.

Unimo for Monadic Programming

Defining a monad in Haskell is hard partly because of the emphasis on denotations. The Haskell approach to monads requires that monadic computations and monad operators be denoted by Haskell values or functions, but sometimes it is more natural to consider what a computation does instead of what a computation is. Unimo enables programmers to construct operational definitions of monads and provide a set of core functions to reduce the semantic boilerplate present in those definitions.

Programming Monads Operationally with Unimo [PDF]
Chuan-kai Lin. Proceedings of the 11th ACM SIGPLAN International Conference on Functional Programming, pages 274–285. September 2006, Portland OR, USA. This paper proposes the Unimo monadic programming framework which helps Haskell programmers define monads. Unimo reduces the semantic boilerplate involved in defining a monad and provides a general mechanism to ensure the compliance with monad laws. This paper also discusses interesting connections between monads and monad transformers, and it illustrates how to use Unimo to perform meta-programming on monadic computations.


Non-Research Projects

I take on a wide variety of pet projects in my spare time, which includes a color filter array demosaic algorithm, a software program that securely wipes the blank space in an ext2 filesystem, and a distributed system simulator for testing reliable multicasting algorithms.


Valid HTML 4.01!
Chuan-kai Lin
Last modified: Thu Jul 16 15:23:58 PDT 2009