Reporter: Nolzen M.


Introduction Haskell is a functional computer programming language which is quite different from most other programming languages. . whose work in mathematical logic serves as a foundation for functional languages. The language is named after logician Haskell Brooks Curry.

including arbitrary-precision integers and rationals. Haskell has an expressive syntax. purelyfunctional programming language. and a rich variety of built-in data types. . from numerical through to symbolic. It has an innovative type system which supports a systematic form of overloading and a module system. floating-point and boolean types. non-strict. standard. as well as the more conventional integer. To this end.What is Haskell? Haskell is a modern. It is specifically designed to handle a wide range of applications.

or follow a null pointer. Programs are shorter which make it easier to look at a function. It's impossible to unconsciously convert a Double to an Int. .Characteristics Pure. There are no side effects. Another feature of Haskell is that it is lazy (technically speaking. it's "non-strict"). Strongly typed. Concise. Laziness.

Haskell offers stronger developed modules. Haskell programs most often reads out almost exactly like the algorithm description.Characteristics High level. not book-keeping of the memory. . The programmer can worry about implementing the algorithm. Modular. There's no worrying about dangling pointers. Often used modular functions can thus be proven correct by induction. Thus Haskell programs can be more modular. the Garbage Collector takes care of all that. Which makes it easier to verify that the function does what the algorithm states Memory managed.

org/hugs/    nhc98 York Haskell Compiler (YHC) Helium .Compilers and interpreters   Glasgow Haskell Compiler (GHC) Hugs http://www.haskell.haskell.

Compilers and interpreters      Utrecht Haskell Compiler (UHC) Jhc LHC Yale Haskell Disciple .

music and sound ‡ Bioinformatics Concurrency and parallelism ‡ Cryptography and hashing ‡ Data Structures and IO Libraries ‡ Database interfaces ‡ Editors written in Haskell and editors for Haskell.applications ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ Audio. HTML. ‡ Extended Haskell Games Genetic programming Graphical User Interface (GUI) Libraries Linguistics and natural language processing Mathematics and physics Network Operating systems and systems programming (also emulators) Program development Robotics Theorem provers Tools for interfacing with other languages Web. XML .

The Netherlands ABN AMRO is an international bank headquartered in Amsterdam. . For its investment banking activities it needs to measure the counterparty risk on portfolios of financial derivatives.Haskell in Industry ABN AMRO Amsterdam. Circos Brand Karma Singapore Brand Karma provides services to brand owners to measure online sentiments towards their brands. AT&T Haskell is being used in the Network Security division to automate processing of internet abuse complaints. Bank of America Merril Lynch Haskell is being used for backend data transformation and loading. specifically for back-end job scheduling and brand matching. Haskell has allowed us to easily meet very tight deadlines with reliable results. Haskell is used in building parts of the product.

Miranda was the most widely used. In September of 1987 At the conference on Functional Programming Languages and Computer Architecture (FPCA '87) in Portland. a meeting was held during which participants formed a strong consensus that a committee should be formed to define an open standard for such languages.HISTORY By 1987. purely functional programming languages existed. more than a dozen non-strict. but was not in the public domain. Oregon. Of these. .

.1 Report was published.0 Report was published .2 Report was published.2 March 1992. Haskell 1.0 1 April 1990.VERSIONS Haskell 1. Haskell 1.1 August 1991. The Haskell version 1. The Haskell version 1. The Haskell version 1.

3 May 1996. reflecting the fact that programs can hardly be portable unless they can rely on standard libraries. and the I/O semantics in the Appendix was dropped. including ´doµ syntax. The Haskell version 1.3 Report was published. Technical changes in Haskell 1. . ‡ Type classes were generalised to higher kinds known as ´constructor classesµ.VERSIONS Haskell 1.3: ‡A Library Report was added. ‡ Algebraic data types were extended in several ways. ‡ Monadic I/O made its first appearance.

informally named Haskell ("Haskell Prime"). . producing a new revision once per year. Haskell 98 February 1999 The Haskell 98 Report: Language and Libraries was published. was announced in November 2009. Haskell Prime In early 2006. The Haskell version 1. The first revision. named Haskell 2010. the process of defining a successor to the Haskell 98 standard. was begun.VERSIONS Haskell 1.4 April 1997. This is an ongoing incremental process to revise the language definition.4 report was published.

Pattern matching List comprehensions Type polymorphism Software transactional memory Hindley²Milner type inference Nondeterminism Parsing Generalized Algebraic Data Types Features .

HFANN a Haskell binding to the Fast Artificial Neural Network (FANN). DSELs allowed the AI to be specified very declaratively. test and use Artificial Neural Networks. Haskell's concise code was perhaps most important for rewriting: it made it practicable to throw away old code occasionally.Contributions to AI Aetion a defense contractor whose applications use artificial intelligence. SVM a library which implements least squares support vector regression. Rapidly changing priorities make it important to minimize the code impact of changes. Aetion has developed three main projects in Haskell. which suits Haskell well. . It provides functions to easily create. train. It includes several common kernel functions. all successful. It has a support vector machine written in Haskell.

Sample programs factorial function in Haskell: -.using only prefix notation and n+k-patterns (no longer allowed in Haskell 2010) factorial 0 = 1 factorial (n+1) = (*) (n+1) (factorial n) .using recursion but written without pattern matching factorial n = if n > 0 then n * factorial (n-1) else 1 -.using recursion factorial 0 = 1 factorial n = n * factorial (n ..1) -.using fold factorial n = foldl (*) 1 [1.n] -..type factorial :: Integer -> Integer -.using lists factorial n = product [1.n] -.

Sample programs Hello World Program: putStrLn ³Hello. " ++ name ++ "!\n") . " ++ name ++ "!\n") Or you can do it in one line: main = putStrLn "What's your name?" >> getLine >>= \ name -> putStr ("Hello.getLine putStr ("Hello. World!´ The following program reads a name from the command line and outputs a greeting message: main = do putStrLn "What's your name?" name <.


EXAMPLE . nor will it perform any input/output.if a function f has type Int -> Int you can be sure that f will not read or write any mutable variables.

Sign up to vote on this title
UsefulNot useful