I am a programming languages researcher, compiler hacker, quantitative finance blogger, and occasional webapp builder. Previously, I studied at the wonderful University of Chicago and Harvey Mudd College.


I am interested in functional programming language design, module systems, type inference, security-type systems, the applications of advanced type systems, and compilers.

My dissertation proposal [pdf] develops some of the interesting issues in program modularity. I am developing the formal semantics for a particularly powerful form of modules which is both fully transparent (i.e., propagates all type information and type actions) and higher-order (i.e., functors which map modules to modules can also map functors/modules to functors/modules). This powerful form of modules enables greater code reuse without compromising strong static type safety. I have also been exploring various implications of extending parallelism and exception safety (type and effect systems) to the program module level.

Language support for modularity is a common theme in any nontrivial language used to construct large software systems. Typed languages, in particular, present interesting design problems. Central to module system design is the imperative to enable separate compilation of large software systems and specification of interfaces to separately compilable compilation units. The richer and more powerful a core language is, the more complicated interface specification of separately compilable modules becomes. The interplay and tension between separate compilation and the simplicity of interface specifications provide a rich design space. The need for modularity is not restricted to general purpose programming languages. For example, theorem proving and model checking languages also employ module systems to improve organizational flexibility and performance by spreading out code to multiple modules and thereby limiting the size of any individual module. Popular extensions of SML such as SML/NJ and MLton support a particularly powerful module system that is higher-order and yet admits full transparency of type components that result from higher-order functor (i.e., a function from module to module) application.

Previously, I have studied methods and semantics for teaching type inference using only rewriting with Dave MacQueen and Robby Findler. While I was at Harvey Mudd, I implemented Jun Yang's UAE (Unification of Assumption Environments) type inference algorithm for the entire Core ML with Chris Stone and various others.

At the University of Chicago and TTI-C, we have an assortment of programming languages oriented activities such as PL Lunch (at TTI-C) and the HYPER (at UChicago).


Information flow
George Kuan. A True Higher-Order Module System. Doctoral Dissertation, University of Chicago, 2010.
George Kuan and David MacQueen. Engineering Higher-Order Modules in SML/NJ. In Proceedings of the 21st International Symposium on the Implementation and Application of Functional Languages, IFL 2009, Revised Selected Papers. Lecture Notes in Computer Science Volume 6041, 2010, pp. 218-235. [ bib | Publisher's site ]
George Kuan. Type Checking and Inference via Reductions. PLT Redex Workshop 2008. Later published as George Kuan. "Type Checking and Inference via Reductions," Semantics Engineering with PLT Redex. Matthias Felleisen et al, eds. Cambridge, Massachusetts: The MIT Press, 2009. [ bib | Publisher's site ]
George Kuan and David MacQueen. Efficient ML type inference using ranked type variables. In Proceedings of the ACM SIGPLAN 2007 Workshop on ML, October 2007. (Corrected) [ bib | .pdf ]
George Kuan, David MacQueen, and Robert Bruce Findler. A rewriting semantics for type inference. In Rocco De Nicola, editor, Programming Languages and Systems, 16th European Symposium on Programming, ESOP 2007, volume 4421, March 2007. [ bib | .pdf ]
George Kuan. A rewriting semantics for type inference. Technical Report TR-2007-03, University of Chicago, 2007. [ bib | .pdf ]


During summer 2009, I taught the Introduction to Computer Science course (CMSC15100) at the University of Chicago. The course utilized the How to Design Programs curriculum, the Scheme/Racket language and platform, and various custom shims for importing data from Facebook and Twitter that I implemented. In the final lab, students wrote to the Twitter API using this Scheme/Racket layer which managed the OAuth login process and Twitter API calls.

I have TA'ed Software Construction, Foundations of Software, Programming Languages, Networks and Distributed Systems, and the summer course Concepts of Programming.


I maintain the Standard ML bundle for the TextMate editor for MacOS X.

Currently, I am working with Dave MacQueen on the SML/NJ module system and compiler.

Primarily focusing on the front-end (i.e., the elaborator), we are improving the flexibility and expressiveness of the language by implementing some of the ideas from the new semantics.


I write about programming and financial markets in my blog

Grand Eloquent Proposal Manager