|
Welcome to the home page of Edmund S. L. Lam |



|
Last Update: 13 Jan 2008, 1200 GMT +8 |
|
About Me I am a PhD research student in the School of Computing (SOC) of National University of Singapore (NUS). I am interested in programming language research. Currently, I’m concentrating on developing parallelism and concurrency abstractions that makes parallel programming a less painful and agonizing task. Particularly, I’m currently working on parallelism in Constraint Handling Rules (CHR) and how it can be used as a formal model and implementation for extending existing high-level concurrency abstractions (eg. Actor model, join-patterns). The following highlights the active projects I am currently working on. Current Active Projects Parallel Implementation of Constraint Handling Rules Constraint Handling Rules (CHR) is a concurrent committed choice rule-based constraint logic programming language which is originally designed for implementing incremental constraint solvers. CHRs specify rewritings among multi-sets of constraints via sets of multi-headed guarded rules. CHRs are concurrent as in they specify the abstraction of concurrent rewriting of multi-set of constraints. While the many years of CHR research have yielded many highly optimized state-of-the-art implementations, none of which are actual true parallel implementation that scales with the number of processors used. In this project, we explore a parallel implementation of CHR in Haskell, that does just this: Allowing multiple solver threads to execute in parallel over the same multi-set of constraints. Project site: http://taichi.ddns.comp.nus.edu.sg/taichiwiki/CCHR/ Actors with Multi-Message Receive Patterns The actor model provides the programmer with high-level concurrency abstractions to coordinate concurrent computations with message passing primitives. Standard implementations (Eg. Erlang and Scala) supports only single message pattern matching over received messages. In this project, we propose extending Erlang message passing primitives with multi-message pattern matching where patterns may be non-linear and guarded by constraints. Our prototype system is implemented as a library extension in Haskell. Project site: <under construction!> Haskell-Join-Rules (Guarded Join-Patterns) Join-calculus is another interesting approach in high-level concurrency abstraction. In join-calculus, concurrent processes are coordinated via multi-headed rules which are declarative and easy to understand. Unfortunately, currently implementations only permits basic rules without guarded constraints and non-linear patterns. We propose an extension of join-patterns with guard constraints. Guarded join-patterns are compiled into Constraint Handling Rules which provides us the formal operational semantics and optimizations to solve parallel multi-headed pattern matching problem. Project site: http://taichi.ddns.comp.nus.edu.sg/taichiwiki/HaskellJoinRules/ |
