Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456 Professor Paul Hudak's Home Page
Professor Paul Hudak
Computer Science Department, Yale University
Those familiar with Yale's new icon for its bulldog mascot will
appreciate the bullfrog icon above (designed by Sandra Loosemore),
which has become our research group's trademark!
Functional Programming
At Yale I head up the Yale
Haskell Group , a team of faculty, research scientists, graduate
students, and programmers involved in all aspects of functional
programming research, but mostly centered around the functional
language Haskell . For people who already know how to
program, the best introduction to Haskell is the tutorial A Gentle Introduction to Haskell
; the standard reference manual is known as the Haskell Report .
A summary of the Yale Haskell Group activities, along with links to
individual members and a biblbiography of our papers, can be found
through the main link in the previous paragraph. Here I briefly
describe some work of my own.
To see where my head's been lately, check out this keynote address (in HTML-ized
PowerPoint format) which I gave at the Usenix DSL Conference on Oct
15, 1997. I've also written a paper on
DSLs to appear in the upcoming International Conference on
Software Reuse. Some earlier thoughts on the topic of domain
specific languages can be found in a position paper that I
presented at the ACM Workshop on Software Engineering and Programming
Languages in June, 1996.
The most fun I've had recently is a collaboration with Conal
Elliott at Microsoft Research on a system called Fran, which
stands for "Functional Reactive Animation." Fran is a collection of
data types and functions for composing richly interactive, multimedia
animations in Haskell. The key ideas are notions of
behaviors -- time-varying, reactive values -- and
events -- sets of arbitrarily complex conditions. Most
traditional values can be treated as behaviors, and when images are
thus treated, they become animations. Fran is currently distributed
as part of the standard Hugs
distribution, and we've written a paper about Fran which was
presented at the June '97 ICFP conference. Conal is the originator of
these ideas and has developed them much further; for more info see
Conal's home page .
Monadic and CPS approaches to I/O, state, etc. have become quite
popular in the pure functional programming community. In an attempt
to understand formally why these approaches "work" (in the
sense of actually achieving the efficiency of "in-place update") I
have developed a modest theory of mutable abstract datatypes
(MADTs), which can be expressed in direct, monadic, or CPS
styles. The most recent version of this work appeared in POPL 97,
called Rolling Your Own Mutable ADT --
A Connection Between Linear Types and Monads , co-authored with my
student Chih-Ping Chen. Earlier work can be found in
Mutable Abstract Datatypes --or-- How to Have Your State and Munge It,
Too .
Recently there has been a lot of interest in so-called
modular interpreters , originating with Moggi's work, popularized
by Wadler, and more recently extended by Steele, Espinosa, and others.
My student Sheng Liang recently solved several problems faced by all
of these earlier attempts, and we've written a POPL paper entitled
Monad Transformers and Modular Interpreters summarizing the
results; a more recent application of this to compiler design can be
found in the ESOP paper
Modular Denotational Semantics for Compiler Construction . We
have also recently submitted a expanded version to a journal, and Sheng
Liang's thesis is now available.
As part of our involvement with Darpa's ProtoTech
(Prototyping Technology) Program a few years ago, Mark Jones and I
participated in an experiment, conducted by the Naval Surface Warfare
Center (NSWC), on the use of Haskell and several other (all
imperative) programming languages to prototype a typical problem
encountered by NSWC in weapons systems development. The results of
this experiment reflect quite favorably upon Haskell, which I've
summarized in a paper entitled Haskell vs. Ada vs. C++
vs. Awk vs. ... An Experiment in Software Prototyping Productivity
. This work is kind of old now, and the paper was rejected from a
journal because the experiment is full of all kinds of holes, but it
is still one of the most requested papers of mine, so here it is!
Also co-authored with Mark (and Sebastian Shaumyan, Professor
Emeritas of Linguistics at Yale) there is a paper entitled Using
Types to Parse Natural Language which was presented at the 1995
Glasgow Workshop on Functional Programming. The paper describes the
implementation of a natural language parser based on Shaumyan's theory
of an "applicative universal grammar" which, surprisingly, looks a lot
like Curry's combinators. The above hyperlink is to Mark's home page
on this project. A more recent version of this work, together with
some philosophical and linguistic motivation,
is titled
Linguistic, Philosopical, and Pragmatic Aspects of Type-Directed
Natural Language Parsing and was presented at the 1997 Conference
on Logical Aspects of Computational Linguistics.
As I said earlier, these are just a few of my current interests in the
area of functional programming. See the Yale Haskell Group
bibliography for a complete listing of other papers,
Computer Music
Recently I've managed to combine my love of music with my convictions
about functional programming by engaging in some computer music
research. It turns out that Haskell serves as a nice vehicle
for music composition, in fact leading to an algebraic
approach to defining "musical objects." Using this approach it's
possible to prove interesting properties about musical objects, such
as "meaning-preserving" transformations that could be useful to a
composer, analyst, or theoretician. We call our system Haskore
, and translators from Haskore musical objects to standard Midi
files, Csound scorefiles, and the NeXT MusicKit scorefiles allow the
user to play Haskore compositions quickly and easily. All of this,
including a paper that just appeared in JFP, is
available online (check out the README file), and also comes in
the standard distribution of Hugs. An example of an application of
Haskore (and a tiny bit of game theory) can be found in
A Model of Performance, Interaction, and Improvisation , joint work with Jonathan Berger, previously in the Department of
Music at Yale.
Jazz
I like jazz. I used to play jazz piano in the jazz quartet
Collectively Speaking , but the group has now disbanded. I still
play occasionally in the local area, but not with one set group.
Collectively Speaking played mostly original compositions reflecting a
contemporary jazz feel but with deep ties to the "tradition." We
produced a cassette recording, The Spirit is Loose , from
which you can hear some brief excerpts in (unfortunately low quality)
8-bit format (
Raze Your Standards and the title cut
The Spirit is Loose ). Most recently we released a
full-length CD entitled Speaking Out containing 10
original jazz compositions; I hope to place some longer excerpts from
this in 16-bit format on-line in the near future.
My full postal address is:
Professor Paul Hudak
Department of Computer Science
Yale Univerity
P.O. Box 208285
New Haven, CT 06520-8285
(203) 432-4715
For express mail deliveries:
Department of Computer Science
Arthur K. Watson Hall
51 Prospect Street
New Haven, CT 06520