Reporter: Nolzen M.


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

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

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

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

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

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

‡ 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. HTML. XML .applications ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ Audio. 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.

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

Oregon. Miranda was the most widely used. purely functional programming languages existed. but was not in the public domain. more than a dozen non-strict. In September of 1987 At the conference on Functional Programming Languages and Computer Architecture (FPCA '87) in Portland.HISTORY By 1987. 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. . Of these.

The Haskell version 1. .VERSIONS Haskell 1. Haskell 1.2 March 1992.0 Report was published . The Haskell version 1.1 August 1991.0 1 April 1990. Haskell 1.2 Report was published.1 Report was published. The Haskell version 1.

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

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

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

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

using lists factorial n = product [1.n] -.1) -.using recursion factorial 0 = 1 factorial n = n * factorial (n .type factorial :: Integer -> Integer -.n] -.using recursion but written without pattern matching factorial n = if n > 0 then n * factorial (n-1) else 1 -.using fold factorial n = foldl (*) 1 [1..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) .

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


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