Functional languages are a productive medium for expressing algorithms and solving specific classes of problems. When functional
languages are applicable, they are amazingly effective. A well written functional program is a concise
executable specification of a solution to a problem.
My research program improves both the applicability and effectiveness of functional languages by creating language extensions, compiler technologies, and offline translation technologies.
We then deploy these new technologies into diverse application areas, including telemetry and real-time systems.
The scope and influence of these ideas is larger than simply their use inside our functional language community.
The long term goal of our community at large is to change how we build software and design hardware.
Spring
2009
EECS 690/700 Functional Programming teaches how to solve engineering
problems efficiently in a modern functional language. Topics may
include basic functional idioms, introduction to Haskell, IO and
purity, functional data structures and algorithms, monads and
applicative functors, parsing combinators, DSLs and hardware
description DSLs, advanced type systems, making assurance arguments,
testing and debugging. These topics will be explored using a hands-on
style with case studies, program assignments and projects.
Fall
2008
EECS 368 Programming Language Paradigms is an introduction
to programming language fundamentals. The objective of the course is
to provide an introduction to alternative programming models that
compliment the traditional imperative models taught in introductory
courses. The course will provide theoretical insight into various
aspects of modern languages while requiring hands-on development of
programs using Java, Scheme, and Haskell.
Recently
Published
Type-Safe Observable Sharing in Haskell, Andy Gill, Proceedings of the 2009 ACM SIGPLAN Haskell Symposium, Sep 2009.
The worker/wrapper transformation, Andy Gill and Graham Hutton, Journal of Functional Programming, March 2009.
A Haskell Hosted DSL for Writing Transformation Systems, Andy Gill, IFIP Working Conference on Domain Specific Languages, July 2009.
Unrestricted Call-by-Value Recursion, Johan Nordlander and Magnus Carlsson and Andy Gill, ACM SIGPLAN Workshop on ML, September 2008.
Asynchronous Exceptions as an Effect, William L. Harrison and Gerard Allwein and Andy Gill and Adam Procter, Ninth International Conference on Mathematics of Program Construction, July 2008.