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
Simon Marlow
[go: Go Back, main page]

Simon Marlow's page of random stuff
Tools
Projects
Libraries
Publications
Links

About me

I'm a developer at Microsoft Research Cambridge, in the Programming Principles and Tools group.

Most of the time, I'm working on Haskell-related research and development, often using the Glasgow Haskell Compiler. I often try to do things in Haskell that you can do in other languages, and hopefully along the way find that Haskell is better. If it turns out not to be better, then we extend Haskell until it is.

Tools

Here are some open-source tools I (co-)maintain:

The Glasgow Haskell Compiler (GHC)
I'm one of the principle developers of GHC, the World's Leading Haskell Compiler (well, we think so).
Haddock
A documentation tool for Haskell libraries.
Happy
A tool for generating parsers in Haskell, much like Yacc for C.
Alex
A tool for generating lexical analysers for Haskell (can you see a pattern emerging? :-), much like Lex/Flex for C.

Projects

Projects I'm currently involved in, or just interested in:

Multi-processor GHC, STM, parallelism
The plan is to make Concurrent Haskell programs run in parallel on multi-processor hardware. Since version 6.6, GHC is now capable of transparently making use of multiple processors when running multithreaded Haskell programs, which is something that very few languages with lightweight threads can do.

Currently (2006-2007) I've been working on extending the GC to work in parallel, with Roshan James who interned here at Microsoft in the summer of 2006.

Ongoing activities in this area are focussed around experimenting with parallelism in Haskell and finding out where the bottlenecks are. A high priority is to get some tools to visualise what's going on in a parallel program.

Haskell Prime
This is the working title for the next revision of the Haskell language. I'm on the committee, and in particular I'll be working on specifying concurrency.
A Visual Studio plugin to support Haskell development
The Visual Studio plugin for Haskell is maturing, thanks mainly to the work of Krasimir Angelov who has continued to work on Visual Haskell since his internship here at MSR in 2005.

If you're interested in contributing to the project, please get in touch. The code is now fully open and released under a BSD license.

The Haskell Cabal
This project aims to produce a re-usable framework for building and distributing Haskell library code. It makes the task of providing your own libraries, and using libraries that others have provided, much easier.
Debugging Haskell
GHC will have some debugging support in its next version (6.8), thanks to Pepe Iborra who worked on this as a Google Summer of Code project in 2006. Pepe is still working on the project, and we plan to take this even further in 2007.

Conferences

I was on the program committee for ICFP 2006, IFL 2006, IFL 2005, IFL 2004, and the Haskell Workshop in 2002.

Libraries

Here are a few Haskell libraries I'm currently designing/developing, with varying degrees of activity.

A System.Process library
The System.Process library is now part of GHC 6.4.
A replacement System.Time library
Ashley Yakely has taken over the reins on this one. See this message for the latest version.
A replacement System.IO library
Yet another library in need of an overhaul. The major focus here is on including internationalization (i18n) in the I/O interface, and at the same time allowing for fast I/O to and from arrays. Many of the ideas are due to others on the libraries@haskell.org mailing list. Haddock docs available from the link above, a prototype implementation is in progress (nothing complete enough yet).
A Binary library
This is a library for binary serialisation of Haskell data. It is a modified version of the library we use in GHC for reading/writing interface files. Its primary focus is speed, and it sacrifices some flexibility in order to achieve it. There is an open question about what kind of binary serialisation support should be in the hierarchical libraries.

Search the libraries mailing list for the latest discussions on this library.

Publications

My publications can be found on a separate page.