程序代做CS代考 Lambda Calculus Java Haskell PROGRAMMING IN HASKELL – cscodehelp代写
PROGRAMMING IN HASKELL
Chapter 1 – Introduction
0
What is a Functional Language?
Opinions differ, and it is difficult to give a precise definition, but generally speaking:
❚ Functional programming is style of programming in which the basic method of computation is the application of functions to arguments;
❚ A functional language is one that supports and encourages the functional style.
1
Example
Summing the integers 1 to 10 in Java:
int total = 0; for(inti=1;i ≤ 10;i++)
total = total + i;
The computation method is variable assignment.
2
Example
Summing the integers 1 to 10 in Haskell:
sum [1..10]
The computation method is function application.
3
Historical Background
1930s:
develops the lambda calculus, a simple but powerful theory of functions.
4
Historical Background
1950s:
Carthy develops Lisp, the first functional language, with some influences from the lambda calculus, but retaining variable assignments.
5
Historical Background
1960s:
develops ISWIM, the first pure functional language, based strongly on the lambda calculus, with no assignments.
6
Historical Background
1970s:
develops FP, a functional language that emphasizes higher-order functions and reasoning about programs.
7
Historical Background
1970s:
and others develop ML, the first modern functional language, which introduced type inference and polymorphic types.
8
Historical Background
1970s – 1980s:
develops a number of lazy functional languages, culminating in the Miranda system.
9
Historical Background
1987:
An international committee starts the development of Haskell, a standard lazy functional language.
10
Historical Background
1990s:
Phil Wadler and others develop type classes and monads, two of the main innovations of Haskell.
11
Historical Background
2003:
The committee publishes the , defining a stable version of the language; an updated version was published in 2010.
12
Historical Background
2010-date:
Standard distribution, library support, new language features, development tools, use in industry, influence on other languages, etc.
13
A Taste of Haskell
f[] =[]
f (x:xs) = f ys ++ [x] ++ f zs
where
ys=[a|a ← xs,a ≤ x] zs=[b|b ← xs,b>x]
?
14