0% found this document useful (0 votes)
48 views

Programming in Haskell: Chapter 1 - Introduction

This document introduces the concepts of functional programming and the Haskell programming language. It discusses how functional languages address the software crisis by encouraging clear, concise and reusable code. The document provides examples of summing integers in Java versus Haskell. It then gives the historical background of functional languages, beginning with the lambda calculus in the 1930s and progressing to the development of Haskell in the late 1980s to the present day.

Uploaded by

Johana Alee Faz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views

Programming in Haskell: Chapter 1 - Introduction

This document introduces the concepts of functional programming and the Haskell programming language. It discusses how functional languages address the software crisis by encouraging clear, concise and reusable code. The document provides examples of summing integers in Java versus Haskell. It then gives the historical background of functional languages, beginning with the lambda calculus in the 1930s and progressing to the development of Haskell in the late 1980s to the present day.

Uploaded by

Johana Alee Faz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 17

0

PROGRAMMING IN HASKELL
Chapter 1 - Introduction
1
The Software Crisis
How can we cope with the size and complexity
of modern computer programs?

How can we reduce the time and cost of
program development?

How can we increase our confidence that the
finished programs work correctly?
2
Programming Languages
Allow programs to be written clearly, concisely,
and at a high-level of abstraction;

Support reusable software components;

Encourage the use of formal verification;
One approach to the software crisis is to design
new programming languages that:
Permit rapid prototyping;

Provide powerful problem-solving tools.
Functional languages provide a particularly elegant
framework in which to address these goals.
3
4
What is a Functional Language?
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.
Opinions differ, and it is difficult to give a precise
definition, but generally speaking:
Example
Summing the integers 1 to 10 in Java:
total = 0;
for (i = 1; i 10; ++i)
total = total+i;
The computation method is variable assignment.
5
Example
Summing the integers 1 to 10 in Haskell:
sum [1..10]
The computation method is function application.
6
Historical Background
1930s:
Alonzo Church develops the lambda calculus,
a simple but powerful theory of functions.
7
Historical Background
1950s:
John McCarthy develops Lisp, the first functional
language, with some influences from the lambda
calculus, but retaining variable assignments.
8
Historical Background
1960s:
Peter Landin develops ISWIM, the first pure
functional language, based strongly on the
lambda calculus, with no assignments.
9
Historical Background
1970s:
John Backus develops FP, a functional
language that emphasizes higher-order
functions and reasoning about programs.
10
Historical Background
1970s:
Robin Milner and others develop ML, the first
modern functional language, which introduced
type inference and polymorphic types.
11
Historical Background
1970s - 1980s:
David Turner develops a number of lazy functional
languages, culminating in the Miranda system.
12
Historical Background
1987:
An international committee of researchers
initiates the development of Haskell, a
standard lazy functional language.
13
Historical Background
2003:
The committee publishes the Haskell 98 report,
defining a stable version of the language.
14
Historical Background
2003-date:
Standard distribution, library support, new
language features, development tools, use in
industry, influence on other languages, etc.
15
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]
?
16

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy