Functional Programming in the Real World 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 HTML 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. This list was originally inspired by a Dagstuhl workshop in May 1994 on Functional Programming in the Real World, organised by Robert Giegerich and John Hughes. The list was originated by Philip Wadler, who currently maintains it. Thanks are due to our previous maintainers, Andy Gill and Jonathan Hogg. Others lists of FP uses and success stories: Caml Success Stories F# testimonials Haskell Communities and Activities Report Quite a few libraries exist for various languages, many of which include some impressive real-world applications. Have a look at: Haskell libraries Scheme libraries Standard ML libraries O'Caml libraries Many theorem provers and other systems for mathematics by computer make use of functional languages. Have a look at: Digital Math, a comprehensive list of applications for mathematics on the computer. For more on FP, see the Functional Programming FAQ. Philip Wadler Industrial Erlang - concurrent, reliable programming Galois - high assurance programming Bluespec - chip design Linspire/Freespire - Haskell for systems programming Jane Street Capital Anno Domini - Year 2000 remediation for Cobol LS/2000 - Year 2000 remediation for Cobol, PL/I, and RPG LexiFi: Combinators for financial derivatives Peval - Partial evaluator for airline scheduling Shop.com Merchant System - an e-commerce database HP Event Correlation Description Language Design/CPN - Computer Tool for Coloured Petri Nets ptk - Test generator for Message Sequence Charts REBOL 001 Tool Suite Curvaceous Visual Explorer F# - simple code for complex problems Developers Pugs: Perl6 User's Golfing System (Perl6 in Haskell) Darcs revision control systems Xmonad - a tiling window manager Compilers, Interpreters and Partial Evaluators Haskell Glasgow Haskell Compiler (GHC) Haskell B. Compiler (HBC) / LML Compiler ML Partial Evaluator (using Set-Based Analysis) Standard ML of New Jersey MLton, an optimizing compiler for Standard ML The Ruby Interpreter Frama-C, a suite for analysis of C source code Syntax Tools Ebnf2ps - a syntax diagram drawing tool Happy - YACC for Haskell SYNGEN - a syntax diagram drawing tool Theorem Provers and Reasoning Assistants Another Logical Framework (ALF) Equational Reasoning Assistant (Era) Higher Order Logic (HOL) Isabelle Java PathFinder Karlsruhe Interactive Verifier (KIV) Plastic The Yarrow Proof Assistant Dumatel, a Prover based on Equational Reasoning ISAC, Transparent Software in Applied Mathematics Mathematical aids DoCon, the Algebraic Domain Constructor Mathscape, a Mathematica package for calculation Network Toolkits and Applications Anonymous FTP Client (CMU) Anonymous FTP Client (Glasgow) Calumet Fox Net Gopher Client Network Toolkit for Haskell Pittsburgh Map and Restaurant Database Zephyr Client Natural Language Processing and Speech Recognition SÁTELITE - Natural Language Database Query System Mitre Speech Recognition System The LOLITA Natural Language Processing System GF - Grammatical Framework ZEN Toolkit Numerically Based Applications MC-SYM - computes 3D shape of nucleic acid FFTW - Fastest Fourier Transform in the West BlurFit - model focal plane imaging Nepal - A Compiler for Nested Data Parallelism Analysis Tools Set-Based analysis for ML RX: an interpreter for Rational Tree Languages Web, HTML, XML XSLT - XML Stylesheet transformations (W3C recommedation) HaXml - utilities for Haskell and XML LAML - Web authoring in Scheme HXML - an XML parser in Haskell BRL - the Beautiful Report Language, KRL - Kawa Report Language WebIt! - XML Programming in Scheme Metcast - real time weather information via http SSAX - SAX XML Parser in Scheme SWISH Semantic Web Inference Scripting in Haskell SXML, SXPath, SXSLT - XML, XPath, XSLT in Scheme Continue - conference management Database Systems Kleisli/CPL - The Kleisli Query System Froglingo - database and programming language Operating Systems Smart-card Light and sound Lula: a system for theater lighting Scheme Score Games and Novelties Cherry: a chess processor The Drops Juggling Animator