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.
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.
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.
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.
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.
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.