Functional Programming
(a word of warning: this page is here for purely historical
reasons, and because so many sites still link to it..;
it was last updated in 1999)
This page is generated from the functional programming part of my
bookmarks. To make it more useful for you, I have added short
descriptions to the links (copied from the original sources where this
was possible, so please don't blame me for the contents;-). If you know
of any URLs related to functional programming, but not mentioned here,
or if you find any errors, please send
me an email (please start the subject line with FP).
It is nice to see that more and more people find this collection useful.
This also means that if you have information on functional
programming on the web, you should try to make sure that
your pages are reachable via this
collection, and that
any information included here is correct and up-to-date. What does
reachable mean? Well, just imagine you were someone else looking for
information about your project/software/etc. in this collection.
Keeping the material here up to date: please don't rely on me picking
all the links from comp.lang.functional, and searching for some short
descriptions. I happen to read news less frequently these days and may
thus miss announcements made only there.
(Claus Reinke - last update: Fri Oct 29 14:12:33 BST 1999
)
Index
Functional Programming (0)
Applications (4)
Collections, FAQ (6)
Events (0)
Current (13)
Past (0)
1994 (2)
1995 (7)
1996 (13)
1997 (33)
1998 (33)
1999 (26)
Groups (44)
Languages (0)
Clean (10)
Haskell (72)
Lisp / Scheme (31)
ML (57)
Miscellaneous (Functional) Languages (24)
dedicated to teaching (4)
multiparadigm (logic/objects/databases) (15)
scientific computing (9)
Projects/Topics (20)
Publications/Bibliographies (18)
Teaching (5)
Tools for Functional Programming (0)
Batch Compilers (4)
Foreign Language Interfaces (3)
Graphics (4)
Interactive Systems (Interpreters) (3)
Others (10)
Parsing (3)
Profiling and Benchmarking (2)
Tracing and Debugging (1)
total: 476
-
-
- Applications of Functional Programming
- Dave Mason
This page is primarily oriented to applications of ``mostly-functional'' programming languages
(Scheme, Lisp, SML, CAML) in commercial or industrial use.
- Functional Programming in the Real World
- Here is a list of functional programs applied to real-world tasks. The main criterion for being real-world is that the program was
written primarily to perform some task, not primarily to experiment with functional programming. Functional is used in the broad sense
that includes both `pure' programs (no side effects) and `impure' (some use of side effects). Languages covered include CAML,
Clean, Erlang, Haskell, Miranda, Scheme, SML, and others.
Further entries are solicted. To submit an entry, please copy the source of this sample and fill in your own details, then send by email
to the address below. If in doubt whether your application is suitable for the list, please ask.
- Impala Home Page
- IMplicitly PArallel LAnguage Application Suite
- Implementation work using ML
- Andrew Appel's collection of projects
-
- Frequently Asked Questions for comp.lang.functional
- Graham M. Hutton
- Functional Language Resources
- Jon Montjoy
- Functional Logic Programming
- Michael Hanus
- Functional programming on the web
- Philip Wadler's review
- The Dataflow Web Page
- John O'Regan
- functional programming from FOLDOC
- The Free On-Line Dictionary of Computing (FOLDOC) has
various entries related to functional programming. And
if some information should be missing, you may be able
to help keeping the dictionary up-to-date..
-
-
- FLOPS'99 - 4th Fuji International Symposium on Functional and Logic Programming
- Tsukuba, Japan, November 11-13, 1999
- ICFP - The International Conference on Functional Programming
- ICFP (International Conference on Functional Programming) is a new annual programming language conference sponsored by
the Association for Computing Machinery under the aegis of the ACM Special Interest Group on Programming Languages (SIGPLAN), in
association with Working Group 2.8 of the International Federation of Information Processing (IFIP).
ICFP is devoted to the design, analysis, implementation, and application of functional programming languages. Languages of interest include
established languages such as LISP, Scheme, Sisal, ML, Haskell, and Id, as well as novel designs in the functional programming tradition. ICFP
combines two former biennial conferences: Functional Programming and Computer Architecture (FPCA) and Lisp and Functional Programming
(LFP).
- ICFP2000 - International Conference on Functional Programming
- LICS - IEEE Symposium on Logic in Computer Science
- Logic in Computer Science (LICS) is held annually and aims to attract high quality original papers covering theoretical and practical issues in computer
science that relate to logic in a broad sense, including algebraic, categorical and topological approaches.
- MPC2000 - Fifth International Conference on Mathematics of Program Construction
- 3-7th July 2000, Ponte de Lima , Portugal
- PADL'00 - Practical Aspects of Declarative Languages
- Boston, Massachusetts, January 17-18, 2000
- PEPM'00 - Partial Evaluation and Semantics-Based Program Manipulation
- January 22-23, 2000 - Boston, Massachusetts
- PLI'00 - Principles, Logics, and Implementations of high-level programming languages
- Montreal, Canada, September 18 - 23, 2000
- POPL '00 - Principles of Programming Languages
- Boston, Massachusetts, January 19-21, 2000
- PPDP'00 - Principles and Practice of Declarative Programming
- Montreal, Canada, September 20-22, 2000
- SBLP'00 - IV Brazilian Symposium on Programming Languages
- Recife, Pernambuco, Brazil, May 17-19, 2000
- WOID'99 - Workshop on Optimization and Implementation of Declarative Programs
- Las Cruces, New Mexico, Nov. 29 - Dec. 4, 1999
- wgp'00 - Workshop on Generic Programming
- 6th July 2000, Ponte de Lima , Portugal
-
-
- IBFI - Functional Programming in the Real World (Dagstuhl Seminar 9420)
- IFL'94 Implementation of Functional Languages
- Wednesday 7th - Friday 9th September 1994,UEA Norwich, UK
-
- FPCA95 Call For Papers
- June 26-28, 1995, La Jolla, California
- FPLE '95
- December 4-6, 1995, Nijmegen, The Netherlands
- Haskell Workshop: Call for Contributions
- June 25, 1995, La Jolla, CA
- High Performance Functional Computing (HPFC) 1995
- April 9-11, 1995, Denver, Colorado
- IFL'95 Implementation of Functional Languages
- September 1995, Bastad, Sweden
- Springschool
- May 24-31, 1995, Bastad, Sweden
- The Glasgow GUI Fest 1995
- July 24-28, 1995, Glasgow, Scotland, UK
-
- 1996 Glasgow Workshop on Functional Programming
- Ullapool, Scotland, 8th-10th July, 1996
- ACM Summer School (FP & OOP)
- September 8-14, 1996, Sobotka, Poland
- Argentina'96 1st Workshop on FP
- September 12, 1996, Buenos Aires, Argentina
- FLIC Functional Languages in the Introductory Computing Curriculum
- May 24, 1996, Philadelphia, Pennsylvania
- FUN'96 Second Italian Workshop on FP
- March 15-16, 1996, Pisa, Italia
- Fuji International Workshop on FP & LP
- November 1-4, 1996, Shonan Village, Japan
(see other link for up-to-date information)
- IFL'96 Implementation of Functional Languages
- September 16-18, 1996, Bonn, Germany
- JSSST Fuji Workshop on Functional and Logic Programming
- Nov. 1-4, 1996. Shonan Village, Japan
- MFPW'96 and NZFPDC'96
- February 12-15, 1996, Massey University, New Zealand
- Multi-Paradigm Logic Programming (MPLP)
- September 5-6, 1996, Bonn, Germany
- POPL Scheme Workshop
- January 21, 1996, St. Petersburg Beach, Florida
- Second International Summerschool on Advanced Functional Programming
- August 25-30, 1996, Olympia, WA, USA
- Workshop on Functional-Logic Programming
- January 17-19, 1996, Marburg, Germany
-
- AADEBUG'97 - Automated Debugging
- May 26-28 1997, Linköping, Sweden
- ACM Summer School (FP&OOP)
- ACM Workshop on Functional and Object-Oriented Programming
July 2-7, 1997, Jadwisin near Warsaw (Poland)
- AMAST'97 - Algebraic Methodology and Software Technology
- 13-17 December 1997, Macquarie University, Sydney, Australia
- CISE Workshop
- July 7-11, 1997, Evergreen State College
Integrating Recent Research Results into the
Undergraduate Curricula:
Software Engineering, Functional Programming, and
Neural Networks
- CLaPF'97 - Conferencia Latinoamericana de Programación Funcional
- Oct 3-4, 1997, La Plata, Argentina
- Copenhagen Logic Summer School '97
- August 11-22, 1997, Copenhagen, Denmark
- DIKU Summer School on Region-Based Memory Management
- Monday 18 August - Friday 22 August, 1997, Copenhagen
- DPLE '97 Declarative Programming Languages in Education
- September 3-5, 1997, Southampton, England
- DSL'97 - Conference on Domain-Specific Languages
- October 15-17, 1997, Santa Barbara, California
- Declarative Languages Day
- last friday of January, the week before the
Australasian Computer Science week
- EURO-PAR'97 - European conference in Parallel Processing
- August 26-29, 1997, Passau, Germany
- EXPRESS'97 - Expressiveness in Concurrency
- 8-12 September 1997, Santa Margherita Ligure, Italy
- FLP'97 - International Workshop on Functional and Logic Programming
- Jan. 8th - Jan. 10th 1997, Schwarzenberg (Black Forest), Germany
- FSTTCS'97 - FOUNDATIONS OF SOFTWARE TECHNOLOGY AND THEORETICAL COMPUTER SCIENCE
- December 18-20, 1997, IIT Kharagpur, India
- FUN'97 - Third Italian Workshop on Functional Programming
- 26-27 March 1997, Bologna, Italy
- GPPL'97 - Great Plains Programming Languages Workshop
- May 16, 1997, Stillwater, Oklahoma
- Glasgow Functional Programming Workshop 1997
- 15th-17th September, 1997, Ceilidh Place, Ullapool
- ICFP'97 WS: Haskell
- June 7, 1997, Amsterdam, The Netherlands
- ICFP'97 WS: Types in Compilation
- June 8, 1997, Amsterdam, The Netherlands
- IFL'97 - Implementation of Functional Languages
- University of St Andrews, St Andrews, Scotland
Wednesday, Sept 10th - Friday, Sept 12th 1997
- ILPS'97 WS: Partial Evaluation
- Post-Conference Workshop on
Specialization of Declarative Programs and its Applications
Port Jefferson, NY, October 16-17, 1997
- ISSAC'97 - International Symposium on Symbolic and Algebraic Computation
- July 21-23, 1997, Maui, Hawaii U.S.A.
- International Summer School on Computational Logic
- July 29 to August 10, 1997, Marktoberdorf (Germany)
- LIRA'97 - Logic and Computer Science
- September 1 - 4, 1997 Novi Sad, Yugoslavia
- PACT'97 - Parallel Architectures and Compilation Techniques
- November 11-15, 1997, San Francisco, California, USA
- PASCO'97 - Parallel Symbolic Computation
- July 20 - 22, 1997,Maui, Hawaii, U.S.A.
- PEPM'97 - Partial Evaluation and Semantics-Based Program Manipulation
- June 12-13, 1997, Amsterdam, The Netherlands
- PLDI'97 - Programming Language Design and Implementation
- Las Vegas, Nevada, 15-18 June 1997
- PLILP/ALP/DPLE/HOA '97
- 1st - 5th September 1997, Southampton, UK
Programming Languages, Implementations, Logics, and Programs
Algebraic and Logic Programming
Declarative Programming Languages in Education
Higher-Order Algebra, Logic and Term Rewriting
- POPL'97 General Information
- January 15-17, 1997, Paris, France
- SAS'97 - International Static Analysis Symposium
- Paris, France, 8-10 September 1997
- TLCA'97 - Typed Lambda-Calculi and Applications
- April 2-3-4, 1997,Nancy, France
- TTP'97 - Workshop on Theories of Types and Proofs
- September 8 - 19, 1997, Tokyo, Japan
-
- 7th International Workshop on Functional and Logic Programming
- April 27-29, 1998, Bad Honnef (Germany) (close to Bonn)
- AFP'98 - 3rd International Summer School on Advanced Functional Programming
- September 13-18, 1998, Braga, Portugal
- APL98 Rome - New gems from old roots
- 27th-31st July 1998, Faculty of Economics, University of Rome "Tor Vergata"
- APPIA-GULP-PRODE'98 - Joint Conference on Declarative Programming
- Corunna (Spain), July 20-23, 1998.
- Advanced course on the Principles of Program Analysis
- 9.-13. November 1998, Schloss Dagstuhl, Germany
- CP'98 Workshop on Set Constraints
- Pisa, Italy, October 30, 1998
- Coalgebra Workshop
- 28-29 March, 1998, Lisbon, Portugal
- DIKU Summer School '98 -Partial Evaluation: Practice and Theory
- June 29 - July 10, 1998
- ESSLLI-98 Workshop: LOGICAL ABSTRACT MACHINES
- August 17 - 28, 1998, Saarbruecken, Germany
- ESSLLI-98: Workshops/Calls for Papers
- August 17 - 28, 1998, Saarbrücken, Germany
- EXPRESS'98 - Expressiveness in Concurrency
- September 7, 1998, Nice, France
- FSTTCS - FOUNDATIONS OF SOFTWARE TECHNOLOGY AND THEORETICAL COMPUTER SCIENCE
- December 17-19, 1998 Chennai, India
- Fuji Symposium on Functional and Logic Programming
- April 2-4, 1998, Kyoto, Japan
- Glasgow Functional Programming Workshops
- Each year we hold a small workshop somewhere in Scotland. The purpose of these workshops is to promote functional programming research at
Glasgow by providing a forum in which new ideas can be discussed in a friendly, informal environment. The workshops are attended by invitees
from other universities and commercial organisations as well as by the Glasgow functional programmers. The proceedings of the workshops are
revised, refereed and published.
- HICSS 31 Minitrack on Coordination languages, models, systems
- January 6-9, 1998, Hawaii
- HLCL'98 - High-Level Concurrent Languages
- HLCL'98 Nice, France, September 12, 1998
- ICCL'98 - International Conference on Computer Languages
- 14-16 May 1998, Chicago, USA
- ICFP'98 - Functional Programming Contest
- The contest begins 17:00 EST, Thursday, August 27, 1998, when the task description will be linked
to this web page, e-mailed to all registered contestants, and posted to a set of relevant newsgroups.
Contestants may submit implementations using a submission form. No submissions will be accepted
after 17:00 EST, Sunday, August 30, 1998. You may, however, submit multiple times; the judges
will use the last submission received before the contest deadline.
- ICFP'98 - International Conference on Functional Programming
- 27-29 September 1998, Baltimore, MD,
- ICFP'98 - ML Workshop
- September, 1998 - Baltimore, Maryland
- IFL'98 - Implementation of Functional Languages
- University College London, London, UK,
Wednesday, Sept 9th - Friday, Sept 11th 1998
- IFL'98 - Workshop on Parallel Functional Programming
- University College London, Sept 8, 1998
- ISMM '98 - International Symposium on Memory Management
- October 17-19(changed!), 1998, Vancouver, British Columbia, Canada
- MPC'98 - Mathematics of Program Construction
- June 15 - 17, 1998, Marstrand, Sweden
- PLDI'98 - Programming Language Design and Implementation
- 14-17 June 1998, Montreal, Canada
- POPL98 - Principles of Programming Languages
- January 19-21, 1998, San Diego, California, USA.
- RTA'98 - Rewriting Techniques and Applications
- from 30th March to 1st April 1998 in Tsukuba, Japan
- RealComp'98 - Tutorial Workshop / Summer School on Real Number Computation
- June 19-20, 1998, Indianapolis, Indiana, USA
- SAS98 & PLILP/ALP98
- Static Analysis Symposium,
Programming Languages, Implementations, Logics and Programs,
Algebraic and Logic Programming,
14--18 September 1998, Pisa, Italy
- TIC'98 - Types in Compilation
- March 25-27, 1998, Kyoto, Japan
- WGP'98 - Workshop on Generic Programming
- June 18th 1998, Marstrand, Sweden
- WPG'98 - Workshop on Generic Programming
- June 18th 1998, Marstrand, Sweden
- Workshop on Principles of Abstract Machines
- 14-18. September 1998 , Pisa, Italy
-
- 1999 Haskell Workshop
- Friday October 1st, 1999, Paris, France
- ACM SAC '99 Coordination Models, Languages and Applications Track
- February 28 - March 2, 1999, The Menger, San Antonio, Texas, U.S.A.
- ACM SIGAPL APL99
- August 10-14, 1999 -- University of Scranton, Scranton, Pennsylvania
- AMAST'98 - Algebraic Methodology and Software Technology
- January 5-9, 1999, Amazonia, Brazil
- CLaFP'99 - 3rd Latin-American Conference on Fuctional Programming
- March 8-9, 1999, Recife, Brazil
- DPE'99 - Functional and Declarative Programming in Education 1999
- 29 September 1999
- ETAPS'99 - European Joint Conferences on Theory and Practice of Software
- Amsterdam, The Netherlands, March 22 26, 1999
- GCSE'99 - First International Symposium on Generative and Component-Based Software Engineering
- September 28-30, 1999, Messe Erfurt, Erfurt, Germany
- HIPS'99 - High-Level Parallel Programming Models and Supportive Environments
- April 12, 1999, San Juan, Puerto Rico, USA
- ICFP Programming Contest
- ICFP'99 - International Conference on Functional Programming 1999: Information
- Paris, France, September 27 - September 29, 1999
- IFL'99 - Implementation of Functional Languages
- The Netherlands, Tuesday, September 7th - Friday, September 10th 1999
- NWPT'99 - The 11th Nordic Workshop on Programming Theory
- Uppsala University, Sweden, October 6-8, 1999
- PADL'99 - Practical Aspects of Declarative Languages
- Jan. 18-19, 1999, Las Cruces, New Mexico, USA
- PEPM'99 - Partial Evaluation and Semantics-Based Program Manipulation
- January 23-24, 1999 - San Antonio, Texas
- PLDI'99 - Programming Language Design and Implementation
- Atlanta, Georgia, May 1-4, 1999
- PLI 99 - Principles, Logics, and Implementations of high-level of programming languages
- Paris, France, September 27 - October 1, 1999
- POPL'99 - Principles of Programming Languages
- January 20-22, 1999 at the Menger Hotel in San Antonio, Texas, USA.
- PPDP99 - Principles and Practice of Declarative Programming
- Paris, France, 29 September - 1 October 1999
- RTA99 - Rewriting Techniques and Applications
- July 2, 1999 to July 4, 1999 in Trento, Italy,
- SAS'99 - Static Analysis Symposium
- Venezia, Italy, 22-24 september 1999
- SFP'99 - 1st Scottish Functional Programming Workshop
- August 29th to September 1st, 1999
University of Stirling, Bridge of Allan, Scotland
- USENIX - Call for Papers - 2nd Conference on Domain-Specific Languages
- October 3-6, 1999, Omni Hotel, Austin, Texas
- WAAAPL'99 - Workshop on Algorithmic Aspects of Advanced Programming Languages
- Paris, France, September 29-30, 1999
- WFLP'99 - 8th International Workshop on Functional and Logic Programming
- Grenoble, France, 28-30 June 1999
- WoLAM'99 - Workshop on Logical Abstract Machines
- 14-16 July 1999, Birmingham
-
- Aachen (RWTH)
- Functional Programming
Optimisation/Language Design/Promoting Functional Programming
- Berlin (FU)
- AG Programmiersprachen und Rechnerarchitektur (in German)
parallel implementation of functional languages
- Berlin (TU)
- The group ÜBB offers courses and conducts research in the areas of compiler construction and the design of programming
languages. Particular emphasis is laid on the application of algebraic and functional programming languages (Opal) and calculi for
program derivation.
- Birmingham
- FP Group's FTP-directory
- Birmingham Research
- School of Computer Science Research Information
Data Structures and Data Parallelism in FPLs/
Mapping Strategies for Parallel Functional Languages/
From Formal Specifications to Functional Programs
- Bristol
- Functional Programming Research
The Brisk project is concerned with increasing the expressive power of functional languages so
that they can be used to implement complex and reactive `systems' programs more easily.
deterministic concurrency/linking Haskell with C/dynamic linking/
support for program debugging and proof
- Burnaby
- LP & FP Group at the Simon Fraser University
- Chalmers
- Functional Programming Group
- Corunna
- LFCIA - LABORATORY OF FOUNDATIONS IN
COMPUTER SCIENCE AND ARTIFICIAL
INTELLIGENCE
- Edinburgh
- Functional Programming
Functional prototyping for parallel implementation/
Parallelising compilation of functional programs/
Interpreters from functions and grammars/
Courseware for Standard ML
- Edinburgh LFCS ML Club Home Page
- The ML Club discusses all aspects of the ML programming language. Currently, research
within the Club members is focussed on an implementation of Standard ML with extensions for
concurrency and distribution. A prototype exists, and we are working on methods of static
analysis to improve its performance. Research is also being done on a supercomputer
implementation of Standard ML and also a portable wide-area, distributed (i.e. Java-like)
version.
- Edinburgh LFCS ML-Club Homepage
- Frankfurt am Main
- Knstliche Intelligenz und Software-Technologie
- Glasgow
- Functional Programming
- IFIP WG 2.8 - Functional Programming
- IFIP WG 2.8 - Functional Programming (old link, everything is on the move at Chalmers..)
- The purpose of the IFIP Working Group 2.8 (part of Technical Committee 2) is to encourage
the exchange of information between researchers in the design, implementation, and use of
functional programming languages
- Italian Working Group on Functional Programming
- KAIST
- Korea Advanced Institute of Science & Technology, Programming Language Laboratory
implementation of functional languages, parallel architecture for functional languages, type theory, programming environment for SML
- Karlsruhe
- Prof. Martin Odersky's group
Referentially transparent imperative extensions of functional programming languages/
Axiomatisation of lazy functional programming/
Type Systems/Concurrency/Constraints/
Programming Language Implementation
- Kent
- Theoretical Computing
Functional Programming/Future functional programming/
Formal support for software engineering/
Implementation of declarative languages/
Distributed Systems
- Kiel
- Computer Organization and Architecture
functional programming languages and systems/
pi-RED - reduction systems for an applied Lambda-calculus/
SAC - single assignment C supporting n-dimensional arrays /
organizing the concurrent execution of functional programs
- Kyoto
- inofficial FP group at the Kyoto University
Research Institute for Mathematical Sciences (KURIMS)
- Leuven
- Language Design and Compiler Construction
Program Specialisation/
Functional Languages and Object Oriented Methods
- London
- Information Systems Research Group
theoretical foundations for a resource-aware type system/
applicability of functional programming to the genetic programming paradigm/
CLOVER - visual programming language and environment which provides
a fusion of functional and object oriented programming
- MSR Research Areas: Advanced Development Tools
- Madrid
- Declarative Programming Group
The main aim of the Declarative Programming Group is investigate several
themes related to the called Declarative Programming, in special Semantics
aspects related to the integration of Programming Paradigms (Functional, Logic,
Constraints, Object Oriented), and other related subjects.
- Massey
- Paradigms and Languages Group
The Paradigms and Languages (PAL) Research Group, as its name suggests, is a focus for
research in language design, implementation, evaluation and comparison, and paradigms.
Research in these areas involves other subjects such as formal program development
development, type theory, and run time systems.
- Nijmegen
- FPL Functional Programming Languages
The research of the Nijmegen research group on functional programming languages focusses for
a great deal around the theory, design, development, implementation and application of
Nijmegen's lazy functional language Clean.
- Nottingham
- Languages and Programming
Group interests focus on the study of programming languages---including all aspects of
design, semantics, application and implementation---but also extend into logics, formal systems, and
natural languages.
- Oregon Graduate Institute
- PacSoft - Pacific Software Research Center
The Pacific Software Research Center at the Oregon Graduate Institute of Science &
Technology is a group of faculty, staff and students working on topics relevant to the design,
implementation and maintenance of software systems. Particular areas of interest include
generator based program development, formal methods of program development, program
transformation techniques, functional programming, reflection, and algebraic programming.
- Oxford
- Declarative Group
The Declarative Group is primarily concerned with declarative and algebraic techniques
in Computer Science. Particular research topics include algebraic specification, term
rewriting, algebraic semantics of the object paradigm, and compiler correctness.
- SCOFPIG - Scottish Functional Parallel Interest Group
- The aim of SCOFPIG to promote research in functional parallel programming, including but not
restricted to higher-order parallel programming, implicit parallelism, data parallelism, parallel
program derivation and algorithmic skeletons. This will be achieved by fostering contacts between
the various Scottish research groups.
- Southampton
- The Declarative Systems & Software Engineering (DSSE) Group covers a wide range of
activities, with the common theme of the programming process and programming languages;
the emphasis is on those techniques and languages which encourage a declarative approach.
- St Andrews
- Stockholm KTH
- PARA - Parallel Systems Group
The "PARA" (former "PDP") group at The Dept. of Teleinformatics, KTH
does research about techniques for efficient implementations of declarative languages,
mainly on parallel computers, and about the the clean integration of parallel programming
primitives with declarative languages. We are mainly interested in lazy functional
languages and data parallel programming.
- Sussex
- Foundations of Computation
- TU Berlin
- FLP - Functional and Logic Programming
- Tasmania
- Functional Programming Research Group
Our group is interested in both theoretical and practical problems in all aspects of functional
languages and programming. Current research projects concentrate on the exploitation of
parallelism in functional programs. They include static analysis of functional programs,
investigation of speculative evaluation, a visual dataflow language project, and the design of a
dataflow machine.
- Tokio
- Research Area of the Information Processing Laboratory (IPL)
- Tsukuba
- SCORE - Symbolic Computation Research Group
combining functional and logic programming/
term rewriting systems
- Type Theory and Functional Programming
- Projects: Implementation of a proof editor for type theory.
Programming in type theory. Formalized theory of functional languages.
A theory of programs and specifications.
- Warwick
- Parallel Functional Programming, Functional Language Implementation, Extending Functional Programming
- Yale
- Functional Programming
The Yale release of Hugs is our most visible ongoing project, but we usually have a variety of
related research going on, depending on the interests of the current faculty, research scientists,
and graduate students
- York
- The Functional Programming (FP) research group in the Department of Computer Science at
the University of York, UK, is small but well established. We are interested in a wide range of
topics in FP but specialise in software technology. Projects already undertaken range from
formal reasoning about programs, through novel implementation methods and profiling tools, to
application studies and experiments with variants of functional programming for relational,
embedded, and interactive computing.
-
-
- Clean Game Library
- Concurrent Clean - Home Page
- Concurrent Clean is a general purpose, higher order, pure and lazy functional programming language for the development of sequential, parallel and distributed real world applications.
- Concurrent Clean - Software Repository
- Concurrent Clean - Software Repository
- FTP Directory: ftp://ftp.cs.kun.nl/pub/SoftwEng.FunctLang/papers/
- This directory contains some papers of the Concurrent Clean group in
postscript and/or dvi format. The files have been compressed. They
can be de-compressed with the unix command `uncompress'. The files
should be downloaded in binary mode. Abstracts can be found
in the files with the '.abs' extension.
- Functional Programming in Clean
- Ana Abrao, Universidad de Uberlandia in Brasil:
I am inaugurating the first of a long list of
unofficial Clean home pages, and I will appreciate your contribution to the success of this home page. The contribution may be in
the form of programs, technical hints (like "How to link C code with Clean"), tutorials, etc. I will also be very happy if you just mail
me messages saying that you liked my work. If I receive many such messages, I may be able to convince my sponsors to keep
things going.
- Hilt - HIGH LEVEL SOFTWARE TOOLS B.V.
- HILT was founded in 1996 to exploit and support the functional programming language CLEAN. This sophisticated programming languages is the result of many years of research
of the Nijmegen Functional Programming Research Group.
- Index of /pub/Clean
- Object I/O library version 1.0 for Macintosh
- This distribution contains the new I/O library: the Object I/O library for the Clean language. It is a
complete redesign of the 0.8 I/O library and adds many new concepts. Please note that we have
refered to this new library in earlier notes as the 1.0 I/O library. We decided to name this system
the Object I/O system because of its more powerful capabilities to construct and compose
interactive objects.
The Object I/O library is currently available only for Macintosh (PowerPC & 68k). We are now
working on a port to Windows (95/NT) to see if the design decisions regarding portability are
valid.
- The Clean IDE project
- IDE stands for Integrated Development Environment. It is the program in which you can write
your Clean programs. It roughly consists of an editor and a project manager. The editor has some
notion of what a Clean program looks like and can therefore aid you in several ways. For example,
it is possible to find the definition of an identifier by pressing a key combination.
An IDE already exists, but some features are missing and its behaviour is not always clear. The
aim of the project is to build a new IDE, which is more powerful, robust and easier to extend. It
will be written in Clean using the new IO library (1.0), which will become available for the
Macintosh in October 1997. The IO library is currently being ported to Windows 95/NT. The
sources of the new Clean IDE will be made public and can serve as a large example program.
-
- A Compiler Toolkit in Haskell
- A GTK+ Binding for Haskell
- AgentScript
- Collection of Haskell modules
- Jan Skibinski, Numeric Quest Inc., 1998.09.18
This is a collection of Haskell modules that we have developed for one reason or another. Some of them are standalone
applications and some other ones are the basic library modules.
Some of them are designed as literate modules, meaning that a code is indicated by some special way (here >) and the rest
is a descriptive text -- either plain ascii or formatted somehow. We choose web readable HTML format.
- Compilation to Java Virtual Machine Code
- Connection Machine Haskell Project
- Data Parallel Haskell
- Directory of /pub/haskell/glasgow
- ENTRE - Explicit Naive Term Rewriting Engine
- Entre is an interpreter for a toy functional programming language. It's main purpose is to
evaluate expressions in as straight-forward a manner as possible, showing each and every
step, so that the user can follow the computation.
Entre is written in Haskell and compiles with the Glasgow Haskell compiler for any UNIX
system where GHC runs. Entre can also be run within the HUGS interpreter environment (on
UNIX not PCs).
- Edison - A Library of Efficient Data Structures
- I am pleased to release a library of efficient data structures for Haskell, named Edison both in honor of Thomas Alva Edison and for the mnemonic value of EDiSon
(Efficient Data Structures). I intend to eventually release a version of the library for Standard ML. Other future possibilities include O'Caml, Scheme, and Java.
The intention of the library is to provide several families of abstractions, each with multiple implementations, along with guidance on how to choose the best
implementation for your particular application. The families of abstractions I have in mind initially are sequences, finite maps, priority queues, and sets/bags.
- Embracing Windows - a simple graphical interface for Hugs
- Embracing Windows is a framework for developing graphical user interfaces (GUIs) in a lazy
functional language. The framework currently runs under Windows 95 using a modified version
of Hugs 1.3.
- Equational Reasoning Assistant (ERA)
- Era v2 Home Page
- There's no code to download at the moment. The best I can offer you is a look at the manual (html) (postscript) (which also details
the main features of Era) and a link to the homepage of the prototype version of Era (written by Andy Gill)
- FRAN - Functional Reactive Animation
- Conal Elliott (microsoft research)
- Fudgets
- Graphical User Interface Toolkit
- Fudgets is primarily a Graphical User Interface
Toolkit for the functional programming language Haskell and
the X Windows system. Fudgets also makes it easy to
create client/server applications that communicate via the
Internet. The latest release of the library was version h12 on
6th November, 1996.
- Fudgets - Demo Form
- Functional DSP
- GHC (very old)
- The Glasgow Haskell Compiler
- Gif writer
- Glasgow Parallel Haskell
- Glasgow Parallel Haskell, or GPH for short, is a non-strict parallel functional programming language. GPH is an extension of Haskell, adding just two new primitives to
the language, namely, a form of parallel composition par, and sequential composition seq. With judicious use of par and seq it is possible to express how a program
should be evaluated in parallel.
- Glasgow Parallel Haskell
- Glasgow Parallel Haskell, or GPH for short, is a non-strict parallel functional programming language. GPH is an extension of Haskell, adding just two new primitives to
the language, namely, a form of parallel composition par, and sequential composition seq. With judicious use of par and seq it is possible to express how a program
should be evaluated in parallel.
- Glenn Strong : Epoc Hugs
- Goffin - Haskell for Parallel and Distributed Programming
- Goffin is an extension of Haskell with combinators from concurrent constraint programming. These
combinators constitute a co-ordination sublanguage that allows the specification of the
co-ordination portion of parallel and distributed programs. The computational portions of these
programs are expressed purely functional. The distinguished feature of Goffin is that the semantic
properties of the functional base language Haskell are preserved; in particular, the extension
retains referential transparency. Although, the development of Goffin initially focused on
tightly-coupled multiprocessors, some extensions that are required for applications executing on
loosely-coupled systems have been proposed recently.
- Goffin is an extension of Haskell with combinators from concurrent constraint programming. These
combinators constitute a co-ordination sublanguage that allows the specification of the
co-ordination portion of parallel and distributed programs. The computational portions of these
programs are expressed purely functional. The distinguished feature of Goffin is that the semantic
properties of the functional base language Haskell are preserved; in particular, the extension
retains referential transparency. Although, the development of Goffin initially focused on
tightly-coupled multiprocessors, some extensions that are required for applications executing on
loosely-coupled systems have been proposed recently.
- GranSim Home Page
- This page describes GranSim, a simulator for the parallel execution of Glasgow Parallel Haskell (GPH) programs. Haskell is a non-strict,
purely-functional programming language. GPH extends Haskell with annotations for sequential (seq) and parallel (par) composition.
GranSim is based on the Glasgow Haskell Compiler (GHC) and available from the anonymous FTP server (Version 0.29 of GHC). Basically,
GranSim is just a special setup of GHC, similar to the parallel setup (GUM). In the GranSim setup the compiler instruments the generated code.
This information is used by the runtime-system to perform an event driven simulation. The actual graph reduction code is the same as for
sequential compilation with GHC. Therefore, all optimisations in GHC can be used for GranSim, too. For now, GranSim only been tested with the
Haskell 1.2 front-end of GHC.
- Graph Visualization with daVinci
- Green card: a foreign-language interface for Haskell
- This document describes GreenCard, a foreign-language interface for the non-strict, purely functional language
Haskell.
- HBC
- The Chalmers Haskell compiler
- HaSQL Project
- This is work at progress. Use it on "AS IS" basis only.
HaSQL is a Haskell to ODBC interface. HaSQL allows Haskell program to run SQL queries against ODBC compliant database. Queries with parameters are supported. Data is
retrieved from database as a lazy list. This package relies on Green-Card - Haskell to C interface. This project is submitted as my Masters project at the Saint-Petersburg State
Technical University, Russia. Master thesis is available in russian only yet :)
- HaXml: Haskell and XML
- Haggis
- graphical user interface framework
- Haggis is a graphical user interface framework for the functional language Haskell, running under
the X Window system. It is currently being developed using the Glasgow Haskell Compiler with
its concurrent extensions to achieve more comfortable interaction with the outside world.
- Happy
- Parser Generator system
- Haskell 1.3 Monadic I/O Definition
- Haskell 98
- Haskell 98: Post ICFP summary
- Haskell Companion - Frame
- Haskell Extensions Page
- Haskell Style for LaTeX2e
- Setting large pieces of code in verbatim is ugly and makes it difficult to uses subscripts or set comments in a proportional type face.
On the other hand, the use of, for example, TeX's math mode requires additional macros to achieve proper kerning in multi-letter
identifiers and to typeset application by juxtaposition. The Haskell style provides environments and macros that simplify setting Haskell
programs in LaTeX. While the style is specifically geared towards Haskell, it should also be useful for other functional languages like
ML or Nesl. The documentation of the style gives an impression of the look of the produced layout
- Haskell for Vision and Robotics
- Haskell++
- Haskell++ is an `object oriented' extension of Haskell, which supports a form of inheritance via
extended class and instance declarations. In addition to ordinary Haskell classes, the
Haskell++ programmer can declare `object classes' whose instances can inherit method
definitions from one another. For example, an object class Point may have instances at types
VanillaPoint and ColourPoint, and the ColourPoint instance may inherit some of its methods
from the VanillaPoint instance. Haskell++ is described in detail in Haskell++: An
Object-Oriented Extension of Haskell, a joint paper with Jan Sparud which was presented at
the Haskell Workshop in June '95.
- HaskellDb: About
- HaskellDirect
- HaskellDirect is an IDL compiler for Haskell, helping the Haskell programmer
- Hugs
- the Haskell User's Gofer System,
a functional programming system based on Haskell
- Hugs (Yale release)
- the Haskell User's Gofer System
- Jakob Axelsson's Haskell programs
- Lambada
- The Lambada framework developed by Sigbjorn Finne and Erik Meijer allows a fluid integration of Haskell and Java programs using JNI and H/Direct.
The current release does not offer much tool support to access Java classes from Haskell yet, but the library is explicitely designed to make it
convenient to manually create Haskell stubs for calling Java and vice versa. Of course this doesn't buy you much when you have to translate large
classes, but help is underway as we are teaching the H/Direct compiler to dance the lambada.
- MAG - a small transformation system for Haskell
- MAG is a small transformation system for a subset of Haskell. It was written as a teaching tool for the 3rd
International Summer School on Advanced Functional Programming. One of its most innovative features is a
matching algorithm for lambda expressions, the one-step matching algorithm. MAG is also of interest because it makes
use of the language implementation tools (for parsing, pretty-printing and semantic analysis) now under
development at Utrecht University.
- NHC13 Nearly a Haskell 1.3 Compiler
- O'Haskell
- PolyP - a polytypic programming language
- Haskell extended with polytypic functions
- Reactive Behavior Modeling in Haskell
- Regular Expressions in Haskell
- Software Collection at Utrecht University
- The software on this page has been written by members and previous members of the computer science department of Utrecht University. The Haskell sources should work both in version 1.3 and
1.4.
- Standard Haskell
- Haskell will be frozen: the final design will be called Standard Haskell and the
language will not be changed again. Of course language experiments will continue, and no
doubt continue to be based on Haskell, but designers are encouraged to use different names so
that `Haskell' refers to a stable language that can be taught and used with confidence.
- Standard Haskell
- Haskell will be frozen: the final design will be called Standard Haskell and the
language will not be changed again. Of course language experiments will continue, and no
doubt continue to be based on Haskell, but designers are encouraged to use different names so
that `Haskell' refers to a stable language that can be taught and used with confidence.
- The Algebraic Domain Constructor DoCon
- DoCon
a computer algebra program written in a pure functional language
Haskell (version 1.4)
- The D????e Homepage
- Derive is a type sensitive preprocessor for Haskell 1.3/1.4. It parses a Haskell module for
structures (data & newtype declarations) and commands. These commands cause rules to be fired
on the parsed data, generating new code which is then appended to the bottom of the input file.
These rules are expressed as Haskell code, and it is intended that the user can add new rules as
required.
Derive is written in Haskell 1.4, and can be compliled using GHC 2.2 or higher, or interpreted
using Hugs 1.4
- The Drops Juggling Animator
- The Functional Programming Language Haskell
- Haskell Information at Aachen University of Technology
- The Gentle Introduction to Haskell, Version 1.4
- The Glasgow Haskell Compiler
- The Glasgow Haskell Compiler (old)
- The Glasgow Haskell Compiler is a robust, fully-featured, optimising compiler for
Haskell 98, GHC compiles Haskell to either native code or C. It implements
numerous experimental language extensions to Haskell 98; for example: concurrency, a
foreign language interface, multi-parameter type classes, scoped type variables,
existential and universal quantification, unboxed types, exceptions, weak pointers, and
so on. GHC comes with a generational garbage collector, and a space and time
profiler.
- The Habitat browser
- source code browser for hbc
- The Haskell 1.4 Report
- The Haskell Home Page (main site, Yale)
- Now merged with the Aachen collection, should be the right place for most of the Haskell-specific entries here
- The Haskell Home Page (mirror site, Aachen)
- The Haskell Home Page (mirror site,St.Andrews)
- The Haskell Wish List
- The lx home page
- This is a preliminary release of lx, a Lex-like package for generating Haskell scanners. The
resulting scanners can be used in Haskell 1.2 and 1.3 programs.
- TkHaskell Home Page
- hmake - a make tool for Haskell programs
- pH - a parallel Haskell
- The pH language is is a parallel, eagerly-evaluated variant of Haskell with syntactic provisions for loops, barriers, and I- and M- structure
storage. The eager evaluation model of pH is similar to that of Id; the current version of the pH compiler shares a back end with the Id compiler,
producing code for the Monsoon dataflow machine. The front end of the pH compiler is a modification of hbcc, an ordinary Haskell compiler
developed by Lennart Augustsson. Optimizations have been added to parallelize list generation and traversal, while existing optimizations have
been weakened somewhat so that they behave properly in the presence of side effects. The pH Prelude is largely identical to the Haskell Prelude,
permitting many programs to compile without modification in either Haskell or pH. Functions which deal with infinite data structures (such as
enumFrom) have been eliminated, and the error behavior of other functions (such as array) have been modified slightly. In addition, pH provides
Prelude code for parallel list operations, I-structures, and M-structures. A variation on State Transformers will permit state-manipulating
programs written in a subset of pH to be run under Haskell simply by incorporating additional code. It is hoped that by retaining much of the Haskell
language, pH will allow direct parallelization of existing Haskell programs, and permit better comparisons between lazy and eager evaluation
models.
- wikiwiki server for Haskell
-
- An Introduction and Tutorial for Common Lisp
- This document provides a small set of resources and references on Common Lisp. It was
prepared for students in the Part-Time MS Program in Computer Science at the Johns Hopkins
University. However, much of the material is generally applicable. This document is evolving.
Please send corrections/suggestions to Marty Hall (hall@apl.jhu.edu). The original of this
document is at http://www.apl.jhu.edu/~hall/lisp.html.
- An Introduction to Scheme and its Implementation - Table of Contents
- a draft of most of Paul Wilson's book-in-progress,
- Bigloo - a practical Scheme compiler
- Book: Common Lisp the Language, 2nd Edition
- Brief Lisp History
- The following information is derived from the history section of dpANS Common Lisp. Lisp is a
family of languages with a long history. Early key ideas in Lisp were developed by John
McCarthy during the 1956 Dartmouth Summer Research Project on Artificial Intelligence..
- Common Lisp HyperSpec (TM)
- an HTML document derived from the
ANSI Common Lisp standard (X3.226-1994)
- Common Lisp Hypermedia Server (CL-HTTP)
- full-featured server for the Internet Hypertext Transfer Protocol
- ECLIPSE
- an ANSI Common Lisp, a Lisp-to-C translator,
and a Lisp library for C programmers
(by Elwood Corporation)
- Early LISP History (1956-1959)
- by Herbert Stoyan University of Erlangen-N"urnberg Lehrstuhl f"ur K"unstiche Intelligenz Am
Weichselgarten 7, D-91058 Erlangen Germany
This paper describes the development of LISP from McCarthy's first research in the topic of
programming languages for AI until the stage when the LISP1 implementation had developed
into a serious program (May 1959). We show the steps that led to LISP and the various
proposals for LISP interpreters (between November 1958 and May 1959). The paper contains
some correcting details of our book (32).
- FreeLisp(TM)
- simplified version of LispWorks
(by Harlequin)
- INTERACTIVE LISP TUTORIAL
- LISP TUTOR is a WWW tutorial that helps the student in the process of learning the LISP
language, which seems a little hard at the beginning. It consists of several chapters that
collects the most important features and in each feature interacts with the student giving him
an immediate feedback about his learning process. At the end, the tutorial presents an
On-Line TEST to be answered by the student and returns the corresponding grade when the
student finishes and hands in the test.
- IU Scheme Educational-infrastructure Project
- To develop software and courseware to support the use of Scheme in undergraduate education.
- Kali Scheme
- Kali Scheme is a distributed implementation of Scheme that permits efficient transmission of
higher-order objects such as closures and continuations. The integration of distributed
communication facilities within a higher-order programming language engenders a number of
new abstractions and paradigms for distributed computing. Among these are user-specified
load-balancing and migration policies for threads, incrementally-linked distributed
computations, and parameterized client-server applications. Kali Scheme supports
concurrency and communication using first-class procedures and continuations. It integrates
procedures and continuations into a message-based distributed framework that allows any
Scheme object (including code vectors) to be sent and received in a message.
- Kawa, the Java-based Scheme system - Table of Contents
- Lisp FAQ
- Lisp History
- This is a HTML set concerning Lisp history
The following material is available:
A paper on the early history of Lisp
A paper on the influence of McCarthy to Lisp
A LISP bibliography
Lisp museum: searchable biography
- Lisp in Germany
- Lisp on the Net
- Lisp: Good News Bad News How to Win Big
- Richard P. Gabriel:
Lisp has done quite well over the last ten years: becoming nearly standardized, forming the basis of a commercial sector, achieving excellent
performance, having good environments, able to deliver applications. Yet the Lisp community has failed to do as well as it could have. In this paper
I look at the successes, the failures, and what to do next.
- LispWorks®
- Common Lisp Development Environment
(by Harlequin)
- Rice Programming Languages Group Software Packages
- The Rice programming languages group has produced several software products over the past
few years. Some of these are listed below. The links attached to the names of the packages
lead to description pages or to the actual package itself.
- Scheme 48 home page
- Scheme Requests for Implementation
- Scheme Shell
- The Association of Lisp Users
- The Internet Scheme Repository
- The L System - Lisp for Embedded Systems
- With the L System it is now possible to use Common Lisp as a development and run time
language in real time embedded systems!
The L System implements a development system for a highly efficient dialect of Common Lisp
which includes multi-threading extensions. The two major components of the L System are the L
cross compiler and the run time system. With these two pieces it is possible to develop code on a
host system and download it to the target system. The run time environment implements the
dynamic aspects of Common Lisp and allows for interactive modification and monitoring of the
target system during program execution. L code can be run as compiled executables or interpreted
on the fly.
- The Scheme Programming Language
- The Scheme Underground
- Welcome to schemers.org!
- This is a collection of resources for the Scheme programming language. It is currently sponsored by Rice PLT, and is hosted on
the Rice University Department of Computer Science Web server. The pages were built and are maintained by Shriram Krishnamurthi, with help from
other members of Rice PLT, most notably Matthias Felleisen, Paul Steckler and Yan-David Erlich. Comments, suggestions and contributions of material
are always welcome. Please contact us at scheme@schemers.org.
- lisp.org
- (not yet available)
-
- A Gentle Introduction to ML
- Abstract for "Principles and a preliminary design for ML2000"
- COMP.LANG.ML FAQ
- (claims to be out of date)
- CRML
- Compile-time Reflective ML
- Caml-Flight
- Caml-Flight is a parallel extension of INRIA's Caml-Light language featuring explicit static
processes, explicit communications, deadlock-freedom and determinism.
- Changes to the Language Definition
- Comp.Lang.ML FAQ [Monthly Posting]
- Comparison of SML/NJ 0.93 and SML/NJ 109.19 (SML96) Top-Level Environments
- Concurrent ML
- CoreML for Java
- A simple Java interpreter for CoreML. The language is based on Milner's extension of the
simply typed lambda calculus with let polymorphism. Integer constants have also been
included, plus two operations on this base type.
- EML Kit
- The EML Kit aims to be (the basis and test-bed for) a comfortable framework for the formal development of programs, using the
Extended ML language, formalism and methodology.
- Ensemble
- toolkit for building distributed applications
in Objective Caml
- Extended ML
- Extended ML (EML) is a framework for specification and formal development of Standard ML
(SML) programs. EML specifications look just like SML programs except that axioms are allowed
in signatures and in place of code in structures and functors.
- FAQ Caml
- File: sml, Node: Top
- File: sml-lib, Node: Top
- Harlequin MLWorks®
- programming environment for Standard ML
- Index of /dist/ml
- Standard ML of New Jersey Version 0.93
(by AT&T)
- Introduction to Standard ML
- Robert Harper
These notes are intended as a brief introduction to Standard ML (1997 dialect) for the experienced
programmer. They are intended as supplementary reading, rather than as a self-standing
textbook. For a self-contained treatment of the use of Standard ML, see Lawrence Paulson, ML
for the Working Programmer (Second Edition), MIT Press, 1997, or Jeffrey Ullman, Elements of
ML Programming, Prentice-Hall, 1994.
- Jacques Garrigue : FIML
- Functional and Imperative ML
- Larry Paulson's FTP Area (Isabelle,..)
- ML'94 (INRIA site)
- 1994 ACM SIGPLAN Workshop on ML and its Applications
- ML3000 Home Page
- MLWorks Resources
- MLWorks and Standard ML links at Harlequin
- MLj 0.2
- MLton
- MLton (formerly called smlc) is a whole-program optimizing compiler for the Standard ML programming language.
MLton runs on X86 machines under Linux. It produces C code as output and requires gcc to produce the final executable.
Installation requires 30M of disk space and 64M RAM.
- MMM Browser Home Page
- WWW browser written in CAML Special Light
- Moby home page
- Moscow ML
- a light-weight implementation of Standard ML
- Objective Caml
- the latest implementation of the Caml dialect of ML
- Objective Label and LablTk
- An extension to Objective Caml allowing
the use of labeled and optional arguments.
Comes with LablTk, a labelized interface
to Tcl/Tk, and LablBrowser, a source and
compiled interface browser
- On-line Information about Standard ML
- CMU Fox project doku on SML
- Papers on Poly/ML
- Preface: Various papers and research documents have been written while the Poly/ML project
was underway and now that the project is completed it seemed appropriate to combine them
into a single document. Some of these papers have been published, while others were written
simply to help clarify thoughts on a particular subject.
- Persimmon MLJ 0.1
- Persimmon MLJ is a compiler for Standard ML which produces Java bytecodes. It compiles the functor-free subset of the new SML'97 language plus some new language
extensions for straightforward interlanguage working with Java. It produces compact standalone compiled code which can be run on any computer with a Java Virtual Machine.
- Poly/ML
- commercially supported Standard ML
with persitent store
(by Abstract Hardware Limited)
- SML Basis Library
- SML Basis Library (Denmark mirror)
- SML#
- an extension of Standard ML with
polymorphic record operations
- SML/E Home Page
- SML/E is a modification of the SML/NJ compiler to help the programmer to diagnose the reasons that certain types where inferred.
It essentially opens up the "black box" of type inference to the programmer, with the intention of helping to diagnose type errors.
- SML/NJ Library
- Standard ML Basis Library
- Standard ML of New Jersey (bell)
- SML '97
- Standard ML of New Jersey (princeton)
- Andrew Appel's SML page
- The Caml language
- The EML Kit
- The EML Kit aims to be (the basis and test-bed for) a comfortable framework for the formal
development of programs, using the Extended ML language, formalism and methodology.
- The HEVEA Home page
- The ML Kit
- The ML Kit Project
- slightly different URL..
- The Metalanguage ML
- the metalanguage of the HOL theorem proving system
- The TILT Compiler Project
- The TILT (or TIL-Two) Compiler Project is a joint effort between researchers
at Cornell and Carnegie Mellon. The goal of the project is to produce a
compiler for the ML-family of programming languages (SML'97, Caml Special
Light, and KML) that takes advantage of types throughout compilation in
order to produce better code without compromising safety or correctness.
- The V6 Web Engine
- personal WWW proxy written in Objective CAML
- The sml_tk home page.
- Visual ML
- eXene
- fxp - a Functional XML Parser
- ml.syntax on Thu May 4 08:03:54 PDT 1995
- paraML
- The main objectives of the project are:
The design of clean extensions to the language ML for coarse grain concurrency on distributed memory multicomputers.
Theoretical specification of these extensions.
The actual implementation of paraML on the AP1000; preferably using MPI as the communication substrate.
Performance measurement and enhancement of the paraML system.
The methodology of using paraML for building other parallel programming systems and for general applications.
-
- Cayenne
- Charity
- Charity is a categorical programming language currently being developed by The Charity
Development Group in The Department of Computer Science at The University of Calgary,
Canada.
- EQUALS
- Eden
- The functional concurrent language Eden is an extension of the lazy
functional language Haskell by constructs for the explicit specification of dynamic
process systems. It employs stream-based communication and is tailored for
distributed memory systems. Eden supports and facilitates the task of parallel and
concurrent programming.
- Elegant
- Elegant started as a compiler generator based on
attributed grammars (the name stands for Exploiting Lazy
Evaluation for the Grammar Attributes of Non-Terminals)
and has grown into a full programming language. It has
been inspired by the abstraction mechanisms found in
modern functional languages, yet Elegant is an
imperative language (Elegant has assignment).
- Erlang
- Erlang is a functional programming language with processes that is suitable for implementing
large systems with soft real time demands. The main advantages of Erlang are robustness,
speed of development and reduced maintenance.
- Erlang Systems
- Erltc
- The Erltc project, which aims to bring a
type system to the concurrent
functional programming language Erlang.
- HOP
- HOP is a functional language with "name-based" interaction between software components:
parameters of functions are not identified by their position, as in usual functional languages, but
by their name. This makes it possible to experiment with various forms of modularity and
object-oriented constructs.
- HOPS -- The Higher Object Programming System
- HOPS is a graphically interactive programming and program transformation system based on term
graphs developed since the mid-eighties in a group lead by Gunther Schmidt.
- High-Performance Erlang
- The Computing Science Department of Uppsala University has started a project aimed at
efficiently implementing the concurrent functional language Erlang. We are sponsored by
Ericsson, NUTEK and TFR.
- The Computing Science Department of Uppsala University has started a project aimed at
efficiently implementing the concurrent functional language Erlang. We are sponsored by Ericsson,
NUTEK and TFR. We have joined ASTEC.
- High-Performance Erlang
- The Computing Science Department of Uppsala University has started a project aimed at
efficiently implementing the concurrent functional language Erlang. We are sponsored by
Ericsson, NUTEK and TFR.
- The Computing Science Department of Uppsala University has started a project aimed at
efficiently implementing the concurrent functional language Erlang. We are sponsored by Ericsson,
NUTEK and TFR. We have joined ASTEC.
- Introduction to the FX Programming Language Project
- (actually only a collection of papers)
effects/effect inference
- JOY
- The language Joy is a purely functional programming language. Whereas all other functional
programming languages are based on the application of functions to arguments, Joy is based on the
composition of functions. All such functions take a stack as argument and produce a stack as
value. Consequently much of Joy looks like ordinary postfix notation. However, in Joy a function
can consume any number of parameters from the stack and leave any number of results on the
stack. The concatenation of appropriate programs denotes the composition of the functions which
the programs denote. One of the datatypes of Joy is that of quoted programs, of which lists are a
special case. Some functions expect quoted programs on top of the stack and execute them in
many different ways, effectively by dequoting. So, where other functional languages use
abstraction and application, Joy uses quotation and combinators -- functions which perform
dequotation. As a result, there are no named formal parameters, no substitution of actual for
formal parameters, and no environment of name-value pairs. Combinators in Joy behave much like
functionals or higher order functions in other languages, they minimise the need for recursive and
non-recursive definitions. Joy has a rich but simple algebra, and its programs are easily
manipulated by hand and by other programs.
- Mondrian
- In the preface of the Haskell report the hope is expressed that extensions or variants of the language appear that incorporate experimental features. The scripting
language Mondrian is such an experiment. Mondrian evolves from Haskell by deleting some of Haskell's more complicated constructs and adding a few simple
new ones.
The current version of Mondrian is just the core subset of Haskell. The plan is to let the language grow by demand and experimentation. The first extension we
are planning to add are implicit arguments, as are already available as an extension to Hugs98.
At the implementation level an interesting aspect of Mondrian the fact that we use Java as the target language, borrowing as much as possible from Java. The
only aspect of Mondrian that we make explicit in the translation to Java is call-by-name and sharing. In fact, one one can say that Mondrian is a domain specific
language embedded in Java!
- The Haskell dialect Mondrian is designed using the explicit philosophy of keeping things
simple and consistent. Mondrian generalizes some of Haskell's (too) complex constructs, and
adds a few simple new ones. This results in a small, intuitively comprehensible language with
an object oriented flavor. If Haskell is the C++ of functional programming, then Mondrian is the
Java of functional programming.
- Mondrian
- In the preface of the Haskell report the hope is expressed that extensions or variants of the language appear that incorporate experimental features. The scripting
language Mondrian is such an experiment. Mondrian evolves from Haskell by deleting some of Haskell's more complicated constructs and adding a few simple
new ones.
The current version of Mondrian is just the core subset of Haskell. The plan is to let the language grow by demand and experimentation. The first extension we
are planning to add are implicit arguments, as are already available as an extension to Hugs98.
At the implementation level an interesting aspect of Mondrian the fact that we use Java as the target language, borrowing as much as possible from Java. The
only aspect of Mondrian that we make explicit in the translation to Java is call-by-name and sharing. In fact, one one can say that Mondrian is a domain specific
language embedded in Java!
- The Haskell dialect Mondrian is designed using the explicit philosophy of keeping things
simple and consistent. Mondrian generalizes some of Haskell's (too) complex constructs, and
adds a few simple new ones. This results in a small, intuitively comprehensible language with
an object oriented flavor. If Haskell is the C++ of functional programming, then Mondrian is the
Java of functional programming.
- OPAL
- The OPAL project is concerned with research into a programming environment in which
advanced language concepts and formal development methods can be used for creating
production-quality software. At the core of the project is the algebraic programming language,
OPAL, which integrates both concepts of algebraic specification and functional programming.
An ever-expanding set of tools supporting the language constitutes the OPAL compilation
system OCS.
- PLAN: A Programming Language for Active Networks
- PLAN is a resource-bounded functional programming
language that uses a form of remote procedure call to
realize active networking.
- Pizza - A substantial companion to Java
- A small, fast and free compiler for an important
superset of the Java programming language.
(adds Parametric polymorphism, First-class functions,
Class cases and pattern matching)
- TK-Gofer
- TkGofer is a library (a prelude file) of functions for writing graphical user interfaces in the
functional language Gofer. The library provides a convenient, abstract and high-level way to
write window-oriented applications. The implementation rests on modern concepts like
monads and constructor classes. For the implementation of graphical IO we added a few
primitives to the standard Gofer interpreter to communicate with the graphical toolkit Tcl/Tk.
- TkGofer is a library for writing graphical user interfaces in the lazy
functional language Gofer. The version currently being distributed is Version 2.0.
- The FISh Homepage
- FISh is a new array programming language that combines (and extends) the
EXPRESSIVE POWER of functional programming with the EFFICIENT EXECUTION
of imperative, or procedural, programming by performing STATIC SHAPE ANALYSIS
on all programs. This shape computation reduces higher-order functional
programs to simple imperative forms, i.e. F - Sh = I. Conversely, FISh
works best when functions are constructed from imperative procedures
and shape functions, as recommended by the slogan that gives the language its name.
Functional = Imperative + Shape. FISh execution speeds on typical array problems
are several times faster than other higher-order, polymorphic languages.
- The TOY System
- TOY is an experimental system for functional logic programming
- The functional programming language Hope
- Hope is a small functional programming language, with polymorphic typing, algebraic types, pattern matching and higher-order functions. The version here is a fully lazy
interpreter.
- The pHluid System
- The pHluid system is a research implementation of the Id programming language, with future plans for a front-end for pH, a parallel dialect of the
Haskell programming language.
The pHluid system implementation is done mostly at Digital's Cambridge Research Laboratory, and is freely available with sources for research
and non-profit use. It is targeted at standard Unix workstation hardware.
-
- A Normaliser for pure and typed lambda-calculus
- This program provides a useful environment to write programs in pure or typed
lambda-calculus. Given a term, the program will compute and print its normal form. This
means that, unlike most functional languages, computation is done under function abstractions
(or lambdas).
- Lambda Calculus Interpreter
- A simple lambda calculus interpreter, using call-by-name semantics. The language is pretty
much Church's simple untyped lambda calculus, the only concession for usefulness is the
addition of numbers.
- Pico
- The fundamental aim of Pico is to introduce the essentials of computer programming to
undergraduate students in the basic sciences other than computer science. In conceiving Pico we
were strongly inspired by the approach used in Abelson and Sussman's book "Structure and
Interpretation of Computer Programs" and equally strongly repulsed by the various standards
efforts to teach computer programming at the high-school and academic level. Pico can actually be
viewed as an effort to render Scheme palatable and even enjoyable to people unable or unwilling to
make the intellectual effort necessary to grasp its elegance and power. We do so by adapting
Scheme's syntax (significantly) and semantics (subtly) in order to use what (little) understanding
the novice science student has of (specification) languages.
- The DrScheme Home Page
- DrScheme is a graphical environment for developing Scheme programs. DrScheme's features
include: source text highlighting of syntax errors, source text highlighting of run-time errors,
support for multiple levels of Scheme from beginner to advanced, interactive and graphical static
analysis, an object system, simple graphics utilities, a graphical user interface development library
DrScheme runs under X Windows, Microsoft Windows, and MacOS.
Future extensions to DrScheme will include: a complete run-time debugger/stepper, execution monitoring
tools (e.g., a profiler)
-
- BABEL
- Die Sprache BABEL ist eine funktional-logische Sprache, die 1988 von Mario
Rodriguez-Artalejo (Universidad Complutense de Madrid) und Juan Jose Moreno-Navarro
(Universidad Politecnica de Madrid) entwickelt wurde. In BABEL wird eine uniforme
Integration des funktionalen und des logischen Programmierstils erreicht. Die Kernidee besteht
darin, den Auswertungsmechanismus funktionaler Sprachen zu verallgemeinern, indem zur
Parameterbergabe die aus den Logik-Sprachen bekannte Unifikation verwendet wird. Eine
Einfhrung in die Semantik und Implementierung von BABEL wird in dem neu erschienenen
Lehrbuch
- CLOVER
- CLOVER (Controlled Lazy Object-flow Visual EnviRonment) is a state-of-the-art
software development system integrating three key technologies: object-oriented design and
programming, functional programming and visual programming.
- Clock
- Clock is a language intended to support the development of interactive software, including the
development of distributed multi-media groupware.
Clock incorporates elements of visual, functional and object-oriented programming. Clock is
supported by the visual ClockWorks environment, allowing the development, browsing and
editing of object-oriented software architectures. Architecture components are themselves
programmed in a pure functional language loosely based on Haskell.
- Database Programming Languages - PFL Software (disfunctional?)
- PFL (Persistent Functional Language) is a
functional database programming language
- FOOPS
- A Functional Object-Oriented Programming System,
patterned after OBJ, a declarative specification language,
from which it derives many of its features.
- FUNLOG++
- Pro.M.D.-FUNLOG++ is an objectoriented, functional, logic programming language plus
unification. FUNLOG++ was created in 1995/1996 by the Pro.M.D. research group in Germany.
In the Pro.M.D. project FUNLOG++ serves as a basic knowledge representation language for
medical knowledge bases. FUNLOG++ syntax is simple but powerful as few independent
concepts are combined orthogonally. The standard library of FUNLOG++ is optimized to
support biochemical and physiological knowledge. A system of competence levels are defined
to deal with unknown, semiknown, known, and empty objects.
- Gofer Object System
- The Gofer Object System (GOS) is a newly developed language combining the object-oriented
and the functional programming paradigm. Thus it inherits all the benefits from both paradigms.
At a first glance, GOS can be understood as a imperative procedural language, as C++ or Eiffel
are, that makes use of an underlying functional language Gofer (developed from Mark P. Jones)
to define abstract datatypes.
- Poplog at ISL
- Poplog is a multi-language applications development environment with efficient incremental
compilers for Common Lisp, Prolog, Pop-11, Standard ML.
It also includes a language-sensitive editor. The system runs under X with Motif or OPEN
LOOK (Sun SPARC only) look+feel and can integrate with software written in C/C++, Fortran,
Pascal and other compiled languages.
- Refus project description page
- Refus is a functional programming language which was designed for the development and
demonstration of new programming concepts. The aim is to combine functional and
object-oriented concepts such that an object-oriented style of programming can be supported
in a referential transparent framework. The central underlying idea is that specializing method
definitions for subclasses and their dynamic binding is the same as a very restricted sort of
best fit pattern matching. Hence, best fit pattern matching -especially with record patterns- in
combination with extensible record types and a hierarchic type system play the central role in
the system. Patterns are a very flexible and powerful tool for the definition and specialization of
multi-methods. They provide multi-methods in a very general and yet unknown way. Refus
differs from Haskell in that it is really object-oriented.
Some more features which usually cannot be found in functional languages are a hybrid
static/dynamic type system, sets, and maps. These features are useful in in specifications and
prototype implementations. The language in its present form supports functional I/O in
Clean-style. We plan to introduce monadic I/O which seem to be the better concept.
- The CLAIRE programming Language
- CLAIRE is a high-level functional and object-oriented language with advanced rule
processing capabilities. It is intended to allow the programmer to express complex algorithms
with fewer lines and in an elegant and readable manner.
- The Mercury Project
- Mercury is a new logic/functional programming language, which
combines the clarity and expressiveness of declarative programming with advanced static analysis
and error detection features. Its highly optimized execution algorithm delivers efficiency far in
excess of existing logic programming systems, and close to conventional programming systems.
Mercury addresses the problems of large-scale program development, allowing modularity,
separate compilation, and numerous optimization/time trade-offs.
- The Poplog Programming Environment
- The Toy System
- Toy is a prototype for a constraint functional logic language. It is another member of the family of languages developed in the 'Declarative
Programming Group' of the 'Departamento de Sistemas Informáticos y Programacion (SIP)' at the Univ. Complutense de Madrid.
- The UFO Project
- A large subset of UFO is a pure, higher-order functional language incorporating the OO
notions of classes, inheritance, and dynamic binding. Another important aspect is the provision
of multi-dimensional functional arrays, with integrated loop structures and monolithic
operators, which generalise those of SISAL. However, unlike SISAL, UFO is not a pure
functional language. It has stateful objects, which allow programs to be written in a concurrent
object-oriented style where appropriate. Safeguards are provided, both in the semantics of
operations on stateful objects and in the type system, to minimise the problems associated
with introducing state.
- poplog.info at Birmingham
-
- FSC - Functional Scientific Computing
- FSC a polymorphic* implicitly typed language with multi-parameter parametric overloading
and pattern matching. One of the aims being to provide a language with the much of the
expressablitity of Haskell for number crunching without having to rely on imperitive tricks.
- FTP Directory: ftp://kestrel.nmt.edu/pub/raymond/oldsisal/
- J Software
- J is a very high level general-purpose language, with a strong emphasis on functional
programming and array processing. J was designed and developed by Ken Iverson and Roger
Hui, and implemented by Iverson Software Inc (ISI).
- NESL: A Nested Data-Parallel Language
- NESL is a parallel language developed at Carnegie Mellon by the SCandAL project. It
integrates various ideas from the theory community (parallel algorithms), the languages
community (functional languages) and the system's community (many of the implementation
techniques).
- SAC - Single Assignment C
- Single Assignment C (SAC) is a functional C variant, whose design is focussed on the needs of
numerical applications. In order to facilitate the compilation into efficiently executable code, the
functional features included in SAC are merely restricted on referential transperancy and the
inclusion of arrays as first class citizens. Other features of functional languages which are not
essential for numerical applications, e.g. higher order functions, polymorphism, or lazy evaluation,
are not supported by SAC. These can be found in general purpose languages, e.g. Haskell, Clean,
or Miranda.
In order to overcome the acceptance problems of other functional languages intended for numerical
applications, e.g. Sisal, Nesl, or Nial, the design goals of SAC are [abbreviated here]:
provide a functional language with a syntax very similar to that of C,high-level array operations
which are invariant against dimensionalities and shapes, efficiently executable code, smooth
integration of states and state modifications into the functional paradigm using uniqueness types,
I/O facilities
- Sisal Language Project
- The objectives of the Sisal Language Project are to develop high-performance
functional compilers and runtime systems to simplify the process of writing scientific programs
on parallel supercomputers and to help programmers develop functional scientific applications.
- Sisal Language Tutorial
- Sisal Language Tutorial Table of Contents
- The APEX Project
- APEX is an APL compiler. APEX generates high-performance, portable, parallel code that
executes up to several hundred times faster than interpreted APL, with serial performance of
kernels competitive with FORTRAN. Preliminary results indicate that acceptable multi-processor
speedup is achievable. The excellent run-time performance of APEX-generated code arises from
attention to all aspects of program execution: run-time syntax analysis is eliminated, setup costs
are reduced, algebraic identities and phrase recognition detect special cases, some matrix
products exploit a generalization of sparse-matrix algebra, and loop fusion and copy optimizations
eliminate many array-valued temporaries. In addition, the compiler exploits Static Single
Assignment and array morphology, our generalization of data flow analysis to arrays, to generate
run-time primitives that use superior algorithms and simpler storage types. Extensions to APL,
including rank, cut, and a monadic operand for dyadic reduction, improve compiled and interpreted
code performance.
-
- APSET
- CMU CS Venari Project Home Page
- semantic-based object storing and retrieval
- Cert Onera research projects
- information encrypted in french (sigh)
- ECRC - FACILE
- SML + higher-oder concurrent processes
- EFOOL - Evaluation of Functional and Object-Oriented Languages
- FAST - The Collected Papers
- Functional Programming for Arrays of Transputers
- First-Class Environments
- NEC Research Institute
Programming Languages and Systems Group
(Suresh Jagannathan, ..)
- Index of /theory/CONFER/
- Concurrency and Functions (ESPRIT BRA 6454)
- Para
- compiling functional languages (variants of ML)
on multi-processor machines
- Persistence
- An attempt to collect information regarding the combination of
orthogonal persistence and functional programming. The main idea
of orthogonal persistence is that the possible life-time of a
data object should be independent from its type.
- Polytypic Programming
- A number of functions have to be written over and over again on different datatypes. Examples
of such functions are pretty printers, parsers, equality functions, most general unifiers, pattern
matchers, rewriting functions, etc. These functions are examples of so-called polytypic
functions. A polytypic function is a function that is defined by induction on the structure of
user-defined datatypes. At Chalmers we are working on an extension of Gofer/Haskell with
which polytypic functions can be written and type checked. Furthermore, we are developing
methods for writing polytypic functions.
- Projet Cristal
- CAML (Leroy, Remy, ..)
- Research Projects of Kwangkeun(Kwang) Yi
- centered around SML
The Siberia Project: Advanced Languages for Numerical Software
Programming Environment for Standard ML(SML)
Static Analysis Technology for SML Programs
SML for Music Programming
- SEIS-Research: Specifications in Functional Languages and their Transformations
- Programs in a functional programming language can be used as clear operational specifications. Such specifications have the advantage that their
partial correctness can be verified by a computer and that they are executable; the specification is its own prototype. Recently developed advanced
translation techniques have enabled the use of functional programming languages for the production of serious software. The demands from a
program as clear specification and efficient product often oppose each other. The research within this area is aimed at developing tools to create
functional specifications and subsequently transform these into efficient programs.
The concrete goal of this research is to construct a fully automatic program optimiser. The optimiser operates by source-to-source transformation
of lazy, purely functional programs. By means of symbolic reduction (compile-time execution), programs are transformed into semantically
equivalent, but operationally more efficient programs. The efficiency gain is caused by two effects: firstly, reductions are done only once at
compile-time instead of many times at run-time --- an effect similar to constant folding; secondly, building and breaking down of intermediate
data structures is eliminated --- an effect known as deforestation. The transformed versions are input to an existing state of the art compiler.
- Smart Programming Envrionments
- A ``smart'' programming environment uses semantic analyses to provide the programmer with
information concerning potential call sites and safe optimizations. The envisioned technology is
applicable to both safe and unsafe languages, but we will initially concentrate on the former
because they have a rigorous, compiler-independent semantics that is amenable to analysis.
- TERSE:TErm Rewriting Support Environment
- The CONFER Project ESPRIT BRA 6454
- The Church Project:
- The Church Project is a Boston-based project designing and implementing an ML-like
functional programming language. The input language is currently based on rank-2 intersection
types while the typed intermediate language has intersection, union, product, sum, and
recursive types.
- The Fox Project Home Page
- Advanced Languages (SML) for Systems Software
- cash@egroups.com
-
- A Collection of Computer Science Bibliographies in BibTeX Format
- A large unfinished book on POP-11
- Robin Popplestone (May 13th, 1997):
In response to a number of requests for information about POP-11 that have
appeared recently, I have made the (compressed Postscript) text of a fairly
complete account of the POP-11 language available via the Internet.
The text dates from the late 1980's, and is largely unrevised. For example,
it does not discuss the remarkable improvement in the efficiency of lazy
(non-strict) evaluation achieved by Peyton-Jones and others in this decade.
It also needs some editing, which it will receive at some future point.
Some of the later chapters are POPLOG-specific.
- Book: Algorithms: A Functional Programming Approach
- Book: Haskell: The Craft of Functional Programming
- Simon Thompson, backup materials for
this introductory text on
functional programming in Haskell
- Book: Introduction to Functional Programming Systems Using Haskell
- Antony J.T. Davie
- Book: ML for the Working Programmer, 2nd Edition
- L.C. Paulson
- Book: Programming With Miranda
- Chris Clack, Colin Myers and Ellen Poon
- Book: The Little Schemer
- Book: The Seasoned Schemer
- FTP Directory: ftp://ftp.dcs.warwick.ac.uk/pub/biblio/
- Warwick bibliography related to functional languages
- FTP Directory: ftp://research.att.com/dist/ml/papers/
- collection of papers dealing with SML/NJ
- Index of /pub/SPECTRE/LUSTRE/PAPERS
- papers around the data-flow language LUSTRE
- Journal of Functional and Logic Programming
- electronic journal from The MIT Press
- PhD: Functional Programming and Input/Output.
- info about Andrew D. Gordon's PhD thesis
- PhD: Interactive Functional Programs by FTP
- Peter Aachten's PhD thesis
- Records of the ML'94 workshop
- SEL-HPC Functional Programming Archive
- The Journal of Functional Programming
-
- Abstract Interpretation and Program Transformation
- Second half of a course on implementing
functional languages by John Hughes and
Thomas Johnsson.
- Advanced Functional Programming
- A course initiated by John Hughes in 1993,
focuses on the construction and use of
reusable programming libraries in Haskell.
- Functional Programming Languages in Education
- `It is the aim of these web pages to collect
information on the use of functional programming
in teaching. This covers important areas, such
as algorithms and data structures, compiler
construction, computer architecture, data base
systems, computer graphics, mathematics, problem
solving and the semantics of programming languages'
Any teaching material that cannot already
be found from FPLE should be added to FPLE!
- Theoretical Foundations of Programming Languages and their Practical Realisation.
- Tutorial Papers in Functional Programming
- John Hughes' Collection
-
-
- The Glasgow Haskell Compiler
- The HBC compiler
- nhc13 from Chalmers
- The York release represents an additional development effort, mainly focussed on adding new
compiler features and libraries. It incorporates Niklas's latest work, and will continue to do so.
Hence, the York release will be more up-to-date than the Chalmers release (which essentially
froze in October 1996).
- nhc13 from York
- nhc13 - Niklas Rojemo's compiler for Haskell 1.3 is designed to produce very space-efficient code.
Furthermore, to help you track down any space faults in your programs, it has the most advanced heap profiler
available for any lazy functional language today. Some recent York extensions include libraries for runtime
compression of heap data, and binary I/O. The latest versions of GreenCard and nhc13make are included.
-
- Green card: a foreign-language interface for Haskell
- This document describes GreenCard, a foreign-language interface for the non-strict, purely functional language
Haskell.
- GreenCard for nhc13
- Haskell's standard foreign language interfacing tool. York extensions allow you to call
Haskell functions from your C program! [ Packaged with nhc13 ]
- HaskellDirect
- HaskellDirect is an IDL compiler for Haskell, helping the Haskell programmer
-
- Fudgets
- Graphical User Interface Toolkit
- Fudgets is primarily a Graphical User Interface
Toolkit for the functional programming language Haskell and
the X Windows system. Fudgets also makes it easy to
create client/server applications that communicate via the
Internet. The latest release of the library was version h12 on
6th November, 1996.
- Functional Reactive Animation (Fran)
- Fran is a Haskell library (or "embedded language") for interactive animations with 2D and 3D
graphics and sound. It runs on Hugs version 1.4, and recently GHC 2.09, under Windows 95 and
Windows NT, using DirectX.
- Haggis
- graphical user interface framework
- Haggis is a graphical user interface framework for the functional language Haskell, running under
the X Window system. It is currently being developed using the Glasgow Haskell Compiler with
its concurrent extensions to achieve more comfortable interaction with the outside world.
- TK-Gofer
- TkGofer is a library (a prelude file) of functions for writing graphical user interfaces in the
functional language Gofer. The library provides a convenient, abstract and high-level way to
write window-oriented applications. The implementation rests on modern concepts like
monads and constructor classes. For the implementation of graphical IO we added a few
primitives to the standard Gofer interpreter to communicate with the graphical toolkit Tcl/Tk.
- TkGofer is a library for writing graphical user interfaces in the lazy
functional language Gofer. The version currently being distributed is Version 2.0.
-
- Hugs 1.4
- Hugs is a small, portable Haskell interpreter written in C that runs on almost any machine. Hugs
is best used as a Haskell program development system: it boasts extremely fast compilation,
supports incremental compilation, and has the convenience of an interactive interpreter (within
which one can move from module to module to test different portions of a program). However,
being an interpreter, it does not nearly match the run-time performance of, for example, GHC or
HBC.
Many Haskell applications are included in the Hugs distribution. Also, Win32 and X11 libraries
are included for easy access to windows, graphics, and other important OS functionalities.
Hugs supports almost all of Haskell 1.4.
- The HBI interactive system (comes with hbc)
- The interactive system can load both source files and compiled files. Functions defined with the
interactive system runs 10 -- 50 times slower than compiled code; compiled code called from
interactive use runs at full speed.
- York gofcc
- York gofcc - Mark Jones's Gofer interpretive compiler extended with: communicating processes; a profiler
offering producer, construction, and retainer information; and several variants of a real-time garbage collector.
This package (668359 bytes) is fairly old now.
-
- CGI programming
- CGI programs receive input from the client's web browser, encoded in a complicated fashion, and
can generate content in a variety of formats (plain text, HTML, JPEG etc) which the client then
sees. This decoding and encoding is often expressed in Perl or C, which makes CGI applications
tedious and awkward to write. Haskell/CGI is a library for writing CGI programs in Haskell.
- Edison: A Library of Efficient Data Structures (Haskell Version)
- This document reflects the preliminary design of a library of efficient data structures for Haskell,
tentatively named Edison in honor of Thomas Alva Edison and for the mnemonic value of EDiSon
(Efficient Data Structures). A version of the library for Standard ML is also planned.
The intention of the library is to provide several families of abstractions, each with multiple
implementations, along with guidance on how to choose the best implementation for your
particular application. The families of abstractions I have in mind initially are sequences, finite
maps, priority queues, and sets/bags.
- Functional writers of PDF documents
- Goffin - Haskell for Parallel and Distributed Programming
- Goffin is an extension of Haskell with combinators from concurrent constraint programming. These
combinators constitute a co-ordination sublanguage that allows the specification of the
co-ordination portion of parallel and distributed programs. The computational portions of these
programs are expressed purely functional. The distinguished feature of Goffin is that the semantic
properties of the functional base language Haskell are preserved; in particular, the extension
retains referential transparency. Although, the development of Goffin initially focused on
tightly-coupled multiprocessors, some extensions that are required for applications executing on
loosely-coupled systems have been proposed recently.
- Goffin is an extension of Haskell with combinators from concurrent constraint programming. These
combinators constitute a co-ordination sublanguage that allows the specification of the
co-ordination portion of parallel and distributed programs. The computational portions of these
programs are expressed purely functional. The distinguished feature of Goffin is that the semantic
properties of the functional base language Haskell are preserved; in particular, the extension
retains referential transparency. Although, the development of Goffin initially focused on
tightly-coupled multiprocessors, some extensions that are required for applications executing on
loosely-coupled systems have been proposed recently.
- GranSim - A simulator for Parallel Haskell
- This page describes GranSim, a simulator for the parallel execution of Glasgow Parallel Haskell
(GPH) programs. Haskell is a non-strict, purely-functional programming language. GPH extends
Haskell with annotations for sequential (seq) and parallel (par) composition.
GranSim is based on the Glasgow Haskell Compiler (GHC) and available from the anonymous
FTP server (Version 0.29 of GHC). Basically, GranSim is just a special setup of GHC, similar to
the parallel setup (GUM). In the GranSim setup the compiler instruments the generated code.
This information is used by the runtime-system to perform an event driven simulation. The actual
graph reduction code is the same as for sequential compilation with GHC. Therefore, all
optimisations in GHC can be used for GranSim, too. For now, GranSim only been tested with the
Haskell 1.2 front-end of GHC.
- Haskell Font Lock for Emacs
- Haskell mode for emacs that uses color to
highlight keywords and other parts of the Haskell syntax.
- Haskell Project: Regular expressions in Haskell
- There are a number of regular expression libraries around. One of the best can be
found in the Perl programming language. The new GHC regexp library, provided here,
is a regular expression package for the purely functional language Haskell.
- Hawk - Specifying and Prototyping Microprocessors
- The goal of the Hawk project is to develop a language for
expressing highly abstracted specifications of modern
microprocessor designs, to provide design teams with the
ability to dynamically explore a wide range of design choices.
The Hawk language (implemented as a Haskell library) is
based heavily on techniques and theory from functional
programming, and from Haskell in particular.
- The D????e Homepage
- Derive is a type sensitive preprocessor for Haskell 1.3/1.4. It parses a Haskell module for
structures (data & newtype declarations) and commands. These commands cause rules to be fired
on the parsed data, generating new code which is then appended to the bottom of the input file.
These rules are expressed as Haskell code, and it is intended that the user can add new rules as
required.
Derive is written in Haskell 1.4, and can be compliled using GHC 2.2 or higher, or interpreted
using Hugs 1.4
- The Haskore Computer Music System
- Haskore is a collection of Haskell modules designed for expressing musical structures in the
high-level, declarative style of functional programming. In Haskore, musical objects consist of
primitive notions such as notes and rests, operations to transform musical objects such as
transpose and tempo-scaling, and operations to combine musical objects to form more complex
ones, such as concurrent and sequential composition. From these simple roots, much richer
musical ideas can easily be developed.
Haskore is distributed as part of the Hugs 1.4 Haskell compiler. If you are using a different
Haskell system, copy the directory lib/Haskore out of the hugs distribution and rename the file
src/HaskoreLoader.hs to src/Haskore.hs to make everything work correctly.
-
- Happy: The Parser Generator for Haskell
- Happy is a parser generator system for Haskell, similar to the tool `yacc' for C. Like `yacc', it
takes a file containing an annotated BNF specification of a grammar and produces a Haskell
module containing a parser for the grammar.
Happy is flexible; unlike `yacc', you can have several Happy parsers in the same program. Happy
can work in conjunction with a lexical analyser supplied by the user (either hand-written or
generated by another program), or it can parse a stream of characters directly (but this isn't
practical in most cases).
- Lucky Manual
- Lucky ist, ähnlich dem yacc für C, ein Parsergenerator für Haskell 1.3.
Lucky liest eine BNF-notierte Grammatikdatei ein und gibt ein Haskell-Modul
aus, das den in Parserkombinatoren übersetzten Parser enthält.
- The Haskell Parser
- We developed a parser for Haskell for two reasons:
(a) To evaluate the suitability of parser combinators for parsing a real programming language.
Parser combinators are more flexible than parser generators (nicest of all: the parsing
functions have the same structure as the syntax definition of the Haskell report). But can
they be used for more than toy languages and first prototypes?
(b) To have a parser for Haskell that can be used in various applications. E.g.: source code
reformaters, literate programming systems, source code browsers, Haskell compilers.
-
- Auburn
- Auburn - a kit for benchmarking implementations of lazy data structures.
- The NoFib Haskell benchmark suite
- We are very keen to encourage the collection of a good suite of Haskell programs to use as
benchmarks. We have made a start, by collecting the NoFib suite. It has three main collections of
programs:
(1) The imaginary part consists of toy programs such as nqueens and Ackermann's function.
Such programs are useless for drawing general conclusions, but can sometimes show up
nasty performance bugs in sharp relief.
(2) The spectral part consists of kernels of real programs, such as Fast Fourier Transform.
Again, one should be careful about drawing any general conclusions from these programs,
but they are a whole lot more realistic than the imaginary suite whilst still being of modest
size.
(3) The real part consists of real application programs, written by people who simply wanted
to get the job done. They are larger and more I/O intensive than the imaginary and spectral
suite.
-
- The Haskell Tracer Project
- Haskell Tracer (due early-1998) - Does your Haskell program give wrong output, produce a runtime error, or
fail to terminate? Using the graphical Trace Browser, you can examine in detail the causes of any of these faults.
(As demonstrated at the IFL'97 Workshop.)