Reporter: Nolzen M.


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

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

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

There's no worrying about dangling pointers. Modular. Often used modular functions can thus be proven correct by induction.Characteristics High level. The programmer can worry about implementing the algorithm. not book-keeping of the memory. Haskell offers stronger developed modules. the Garbage Collector takes care of all that. . Haskell programs most often reads out almost exactly like the algorithm description. Thus Haskell programs can be more modular. Which makes it easier to verify that the function does what the algorithm states Memory managed.    nhc98 York Haskell Compiler (YHC) Helium .org/ghc/download Hugs http://www.haskell.Compilers and interpreters   Glasgow Haskell Compiler (GHC) http://www.

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. XML . HTML. 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.

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

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

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

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

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

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

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

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

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.getLine putStr ("Hello.Sample programs Hello World Program: putStrLn ³Hello. " ++ name ++ "!\n") .


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. EXAMPLE .

Sign up to vote on this title
UsefulNot useful