Download Functional Languages

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Curry–Howard correspondence wikipedia , lookup

Common Lisp wikipedia , lookup

Lisp (programming language) wikipedia , lookup

Currying wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Closure (computer programming) wikipedia , lookup

Anonymous function wikipedia , lookup

Lambda calculus definition wikipedia , lookup

Lambda calculus wikipedia , lookup

Standard ML wikipedia , lookup

Falcon (programming language) wikipedia , lookup

Combinatory logic wikipedia , lookup

Lambda lifting wikipedia , lookup

Transcript
An Introduction to
Functional Programming
Dr. Muhammed Al-Mulhem
ICS535-101
1
Topics
Introduction
Mathematical Functions
Fundamentals of Functional Programming
Languages
Applications of Functional Languages
Comparison of Functional and Imperative
Languages
The First F P Language: LISP
COMMON LISP
Dr. Muhammed Al-Mulhem
ICS535-101
2
Introduction
The design of the imperative languages is based directly
on the von Neumann architecture
– Efficiency is the primary concern, rather than the
suitability of the language for software development
The design of the functional languages is based on
mathematical functions
– A solid theoretical basis that is also closer to the user,
but relatively unconcerned with the architecture of the
machines on which programs will run
Dr. Muhammed Al-Mulhem
ICS535-101
3
Introduction (Contd.)
What is the Functional Paradigm ?
Program viewed as a collection of functions.
– Functional programming is a 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.
Functional languages try to model
mathematical functions as much as possible.
There are no assignments; assignments are
bad and therefore banned!
Emphasize on simple and clean semantics.
Example languages: Scheme, Miranda,
Haskell, ML
Dr. Muhammed Al-Mulhem
ICS535-101
4
Introduction (Contd.)
The Functional Paradigm: Computational Foundation
FLs are based on a computation model called lambda
calculus
The lambda calculus is a simple mathematical theory
developed before the advent of digital computers
The lambda calculus was intended to be a foundation of
mathematics in the 1930s
The lambda calculus has very few syntactic constructs
but it is Turing complete
– It can compute any function that can be computed by
a computing device
FLs are often considered as sugared versions of the
lambda calculus
Dr. Muhammed Al-Mulhem
ICS535-101
5
Introduction (Contd.)
Functional Languages: Key Features
High-level of abstraction
–
Functional languages are among the highest-level languages in
present-day use
Clean and simple semantics
–
Easier to reason about functional programs than imperative
programs
Expressivity
–
Support for rapid application development
Support for concurrency
High orthogonality
–
Few language constructs compared to imperative or OO
languages
Lazy evaluation (for some of them)
Dr. Muhammed Al-Mulhem
ICS535-101
6
Mathematical Functions
Def: A mathematical function is a mapping of
members of one set, called the domain set, to
another set, called the range set
A lambda expression specifies the parameter(s)
and the mapping of a function in the following
form
(x) x * x * x
for the nameless function f(x) = x * x * x
Dr. Muhammed Al-Mulhem
ICS535-101
7
Mathematical Functions (Contd.)
Lambda expressions describe nameless
functions
Lambda expressions are applied to
parameter(s) by placing the parameter(s)
after the expression
e.g. ((x) x * x * x)(3)
which evaluates to 27
Dr. Muhammed Al-Mulhem
ICS535-101
8
Mathematical Functions (Contd.)
Def: A higher-order function, or functional form, is one
that either takes functions as parameters or yields a
function as its result, or both
Many kinds of functional forms, here are some:
1. Function Composition
– A functional form that takes two functions as
parameters and yields a function whose value is the
first actual parameter function applied to the result of
the second
Form: h  f ° g
which means h (x)  f ( g ( x))
For f (x)  x * x * x and g (x)  x + 3,
h  f ° g → h(x) = f(g(x)) = g(x) * g(x) * g(x)
=(x + 3)* (x + 3)* (x + 3)
Dr. Muhammed Al-Mulhem
ICS535-101
9
Mathematical Functions
(Contd.)
2. Construction
– A functional form that takes a list of functions
as parameters and yields a list of the results
of applying each of its parameter functions to
a given parameter
Form: [f, g]
For f (x)  x * x * x and g (x)  x + 3,
[f, g] (4) yields (64, 7)
Dr. Muhammed Al-Mulhem
ICS535-101
10
Mathematical Functions (Contd.)
3. Apply-to-all
– A functional form that takes a single function
as a parameter and yields a list of values
obtained by applying the given function to
each element of a list of parameters
Form: 
For h (x)  x * x * x
( h, (3, 2, 4)) yields (27, 8, 64)
Dr. Muhammed Al-Mulhem
ICS535-101
11
Why Functional Languages?
The main reason we use functional programming is to
reduce the time it takes to bring a product to the
market and to reduce the total effort required to design
and maintain our products. As functional programs
are both shorter and more succinct than
corresponding programs in languages such as C,
C++, or Java, the number of errors made in the design
is also greatly reduced
– Ericsson Telecom
Widely used for teaching introductory computer
science courses in European universities.
Dr. Muhammed Al-Mulhem
ICS535-101
12
Applications of Functional
Languages
APL is used for throw-away programs
LISP is used for artificial intelligence
–
–
–
–
Knowledge representation
Machine learning
Natural language processing
Modeling of speech and vision
Scheme is used to teach introductory
programming at a significant number of
universities
Dr. Muhammed Al-Mulhem
ICS535-101
13
Comparing Fun. and Imp.
Languages
Imperative Languages:
– Efficient execution
– Complex semantics
– Complex syntax
– Concurrency is programmer designed
Functional Languages:
– Inefficient execution
– Simple semantics
– Simple syntax
– Programs can automatically be made concurrent
Dr. Muhammed Al-Mulhem
ICS535-101
14
The First F P Language: LISP
Data object types: originally only atoms and lists
List form: parenthesized collections of sublists and/or
atoms
e.g., (A B (C D) E)
Originally, LISP was a typeless language
LISP lists are stored internally as single-linked lists
Lambda notation is used to specify functions and function
definitions. Function applications and data have the same
form.
e.g., If the list (A B C) is interpreted as data it is a simple
list of three atoms, A, B, and C . If it is interpreted as a
function application, it means that the function named A is
applied to the two parameters, B and C
The first LISP interpreter appeared only as a
demonstration of the universality of the computational
capabilities of the notation
Dr. Muhammed Al-Mulhem
ICS535-101
15
COMMON LISP
A combination of many of the features of the popular
dialects of LISP around in the early 1980s
A large and complex language--the opposite of Scheme
Includes:
– records
– arrays
– complex numbers
– character strings
– powerful I/O capabilities
– packages with access control
– imperative features like those of Scheme
– iterative control statements
Dr. Muhammed Al-Mulhem
ICS535-101
16