Top Banner
Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace TacticalGrace Thursday, 16 May 13 » Straight to next slide [15min Question (λ); 20min Methodology; 15min Application]
158

Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Apr 18, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Manuel M T ChakravartyUniversity of New South Wales

Do Extraterrestrials Use Functional Programming?

mchakravarty

α TacticalGraceTacticalGrace

Thursday, 16 May 13

» Straight to next slide

[15min Question (λ); 20min Methodology; 15min Application]

Page 2: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Part 1The Question

Thursday, 16 May 13

This talk will be in three parts.(1) Discussing essence of functional programming. What makes FP tick?(2) How do FP principles influence software dev? Will propose a dev methodology for FP.(3) Look at concrete dev project, where we applied this methodology. »»Let's start with The Question…

Page 3: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

“Do Extraterrestrials Use Functional Programming?”

Thursday, 16 May 13

» <Read question>* To visit us, they need to be on an advanced technological level with a deep understanding of science.* They won't speak one of humanity's languages, though. So, how do we establish a common basis?

Page 4: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Thursday, 16 May 13

* How to communicate?* Common idea: universal principles may help establish a basis — universal constants or universal laws.

Page 5: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Thursday, 16 May 13

* How to communicate?* Common idea: universal principles may help establish a basis — universal constants or universal laws.

Page 6: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

π?

Thursday, 16 May 13

* How to communicate?* Common idea: universal principles may help establish a basis — universal constants or universal laws.

Page 7: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

π?E = mc2

Thursday, 16 May 13

* How to communicate?* Common idea: universal principles may help establish a basis — universal constants or universal laws.

Page 8: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Thursday, 16 May 13

* Computer languages? Agree on a common language of computation?* In 1936, Alonzo Church introduced the lambda calculus: <Explain lambda calculus>* Serve as a common language? Like a computational Esperanto?* Also other calculi/machines. Famous: Turing machines. Which would aliens pick? »» Let's look: how are they related…

Page 9: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Alonzo Church

M, N → x | λx.M | M N

Thursday, 16 May 13

* Computer languages? Agree on a common language of computation?* In 1936, Alonzo Church introduced the lambda calculus: <Explain lambda calculus>* Serve as a common language? Like a computational Esperanto?* Also other calculi/machines. Famous: Turing machines. Which would aliens pick? »» Let's look: how are they related…

Page 10: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Alonzo Church

M, N → x | λx.M | M NM, N → x | λx.M | M N

Thursday, 16 May 13

* Computer languages? Agree on a common language of computation?* In 1936, Alonzo Church introduced the lambda calculus: <Explain lambda calculus>* Serve as a common language? Like a computational Esperanto?* Also other calculi/machines. Famous: Turing machines. Which would aliens pick? »» Let's look: how are they related…

Page 11: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Alonzo Church

M, N → x | λx.M | M NM, N → x | λx.M | M NM, N → x | λx.M | M N

Thursday, 16 May 13

* Computer languages? Agree on a common language of computation?* In 1936, Alonzo Church introduced the lambda calculus: <Explain lambda calculus>* Serve as a common language? Like a computational Esperanto?* Also other calculi/machines. Famous: Turing machines. Which would aliens pick? »» Let's look: how are they related…

Page 12: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Alonzo Church

M, N → x | λx.M | M NM, N → x | λx.M | M NM, N → x | λx.M | M NM, N → x | λx.M | M N

Thursday, 16 May 13

* Computer languages? Agree on a common language of computation?* In 1936, Alonzo Church introduced the lambda calculus: <Explain lambda calculus>* Serve as a common language? Like a computational Esperanto?* Also other calculi/machines. Famous: Turing machines. Which would aliens pick? »» Let's look: how are they related…

Page 13: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Alonzo Church

M, N → x | λx.M | M NM, N → x | λx.M | M NM, N → x | λx.M | M NM, N → x | λx.M | M NM, N → x | λx.M | M N

Thursday, 16 May 13

* Computer languages? Agree on a common language of computation?* In 1936, Alonzo Church introduced the lambda calculus: <Explain lambda calculus>* Serve as a common language? Like a computational Esperanto?* Also other calculi/machines. Famous: Turing machines. Which would aliens pick? »» Let's look: how are they related…

Page 14: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Alonzo Church

M, N → x | λx.M | M N

Alan Turing

Thursday, 16 May 13

* Computer languages? Agree on a common language of computation?* In 1936, Alonzo Church introduced the lambda calculus: <Explain lambda calculus>* Serve as a common language? Like a computational Esperanto?* Also other calculi/machines. Famous: Turing machines. Which would aliens pick? »» Let's look: how are they related…

Page 15: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Alonzo ChurchAlan Turing

M, N → x | λx.M | M N

Thursday, 16 May 13

* The lambda calculus and Turing machines have the same origin.* Beginning 20th century: group of famous mathematicians interested in formalising foundation of mathematics.»» This led to an important question…

Page 16: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

M, N → x | λx.M | M N

Lambda Calculus Turing Machine

Thursday, 16 May 13

* The lambda calculus and Turing machines have the same origin.* Beginning 20th century: group of famous mathematicians interested in formalising foundation of mathematics.»» This led to an important question…

Page 17: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

M, N → x | λx.M | M N

Lambda Calculus Turing Machine

By-product of a study of the foundation and expressive power

of mathematics.

Thursday, 16 May 13

* The lambda calculus and Turing machines have the same origin.* Beginning 20th century: group of famous mathematicians interested in formalising foundation of mathematics.»» This led to an important question…

Page 18: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

David Hilbert

Thursday, 16 May 13

* Challenge posed by David Hilbert, 1928: the Entscheidungsproblem (decision problem)* Church & Turing, 1936, no solution, using lambda calculus & Turing machines.»» So what is the Entscheidungsproblem…

Page 19: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Is there a solution to the Entscheidungsproblem?

David Hilbert

Thursday, 16 May 13

* Challenge posed by David Hilbert, 1928: the Entscheidungsproblem (decision problem)* Church & Turing, 1936, no solution, using lambda calculus & Turing machines.»» So what is the Entscheidungsproblem…

Page 20: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Is there a solution to the Entscheidungsproblem?

David Hilbert

No!

No!

Thursday, 16 May 13

* Challenge posed by David Hilbert, 1928: the Entscheidungsproblem (decision problem)* Church & Turing, 1936, no solution, using lambda calculus & Turing machines.»» So what is the Entscheidungsproblem…

Page 21: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

“Is there an algorithm to decide whether a given statement is provable from a set of axioms using the rules of first-order

logic?”

Thursday, 16 May 13

* In other words: Given a world & a set of fixed rules in the world, check whether the world has a particular property.»» In turn, leads to the question…

Page 22: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

“How do you prove that an algorithm does not exist?”

Thursday, 16 May 13

* Because we cannot solve the challenge, doesn't mean it is unsolvable?* Need systematic way to rigorously prove that a solution is impossible.»» Church & Turing proceeded as follows…

Page 23: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Thursday, 16 May 13

* 1936, the concept of an algorithm remained to be formally defined

Page 24: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

(1) Define a universal language or abstract machine.

(2) Show that the desired algorithm cannot be expressed in the language.

Thursday, 16 May 13

* 1936, the concept of an algorithm remained to be formally defined

Page 25: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Define a universal language or abstract machine.

Thursday, 16 May 13

* Two steps <Explain>* Church & Turing used: (1) lambda term, (2) Turing machine* Hypothesis: universal — ie, any algorithmically computable function can be expressed»» They showed…

Page 26: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Define a universal language or abstract machine.

Lambda Calculus Turing Machine

M, N → x | λx.M | M N

Thursday, 16 May 13

* Two steps <Explain>* Church & Turing used: (1) lambda term, (2) Turing machine* Hypothesis: universal — ie, any algorithmically computable function can be expressed»» They showed…

Page 27: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Lambda Calculus Turing Machine

M, N → x | λx.M | M N

Universal language

Thursday, 16 May 13

* Two steps <Explain>* Church & Turing used: (1) lambda term, (2) Turing machine* Hypothesis: universal — ie, any algorithmically computable function can be expressed»» They showed…

Page 28: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Lambda Calculus Turing Machine

M, N → x | λx.M | M N

Universal language

Church-Turing thesis

Thursday, 16 May 13

* Two steps <Explain>* Church & Turing used: (1) lambda term, (2) Turing machine* Hypothesis: universal — ie, any algorithmically computable function can be expressed»» They showed…

Page 29: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Lambda Calculus Turing Machine

M, N → x | λx.M | M N

Computational Power

=

Thursday, 16 May 13

* Any program expressible in one is expressible in the other.»» However, …

Page 30: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Turing MachineLambda Calculus

M, N → x | λx.M | M N

Generality

Thursday, 16 May 13

* Lambda calculus: embodies concept of (functional) *abstraction** Functional abstraction is only one embodiment of an underlying more general concept.»» This is important, as…

Page 31: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Turing Machine

Lambda Calculus

M, N → x | λx.M | M N

Generality

Thursday, 16 May 13

* Lambda calculus: embodies concept of (functional) *abstraction** Functional abstraction is only one embodiment of an underlying more general concept.»» This is important, as…

Page 32: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

“Generality increases if a discovery is independently

made in a variety of contexts.”

Thursday, 16 May 13

» Read the statement.* If a concept transcends one application, its generality increases.»» This is the case for the lambda calculus…

Page 33: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Simply typed lambda calculus

Thursday, 16 May 13

* Firstly, lambda calculus (no polytypes)…»» Mathematicians Haskell Curry & William Howard discovered: it is structurally equivalent to…

Page 34: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Simply typed lambda calculus

Lambda calculus with monotypes

Thursday, 16 May 13

* Firstly, lambda calculus (no polytypes)…»» Mathematicians Haskell Curry & William Howard discovered: it is structurally equivalent to…

Page 35: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Intuitionistic propositional logic

Thursday, 16 May 13

»» Later, Joachim Lambek found: they correspond to…

Page 36: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Intuitionistic propositional logic

Constructive logic

Thursday, 16 May 13

»» Later, Joachim Lambek found: they correspond to…

Page 37: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Simply typed lambda calculus

Intuitionistic propositional logicCartesian closed

categories

Thursday, 16 May 13

* Three independently discovered artefacts share the same structure!* Implies an equivalence between programming & proving.»» The upshot of all this…

Page 38: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Simply typed lambda calculus

Intuitionistic propositional logicCartesian closed

categories

Structure from category theory

Thursday, 16 May 13

* Three independently discovered artefacts share the same structure!* Implies an equivalence between programming & proving.»» The upshot of all this…

Page 39: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Simply typed lambda calculus

Intuitionistic propositional logic

Cartesian closed categories

Curry-Howard-Lambek correspondence

Thursday, 16 May 13

* Three independently discovered artefacts share the same structure!* Implies an equivalence between programming & proving.»» The upshot of all this…

Page 40: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

“Alonzo Church didn't inventthe lambda calulus;he discovered it.”

Thursday, 16 May 13

» Read the statement.* Just like Issac Newton didn't invent the Law of Gravity, but discovered it.»» Getting back to our extraterrestrials…

Page 41: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Thursday, 16 May 13

* Lambda calculus: fundamental, inevitable, universal notion of computation.* In all likelihood: extraterrestials know about it, like they will know π.

Page 42: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Thursday, 16 May 13

* Lambda calculus: fundamental, inevitable, universal notion of computation.* In all likelihood: extraterrestials know about it, like they will know π.

Page 43: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

M, N → x | λx.M | M N

M, N → x | λx.M | M N

Thursday, 16 May 13

* Lambda calculus: fundamental, inevitable, universal notion of computation.* In all likelihood: extraterrestials know about it, like they will know π.

Page 44: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

“So what?”

Thursday, 16 May 13

* Is all this simply a academic curiosity?* Does it impact the practical use of FLs?»» It is crucial for FLs…

Page 45: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Thursday, 16 May 13

* FLs: pragmatic renderings of lambda calculus with syntactic sugar etc for convenience.* Important application: compilation via extended lambda calculi as ILs (eg, GHC)»» Moreover, central language features…

Page 46: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

λHaskell

LISP

SchemeClojure

ScalaStandard ML

OCaml

Erlang

F# CleanElm

AgdaRacket

Miranda

FPHope

IdISWIM

SASLSISAL

J

Thursday, 16 May 13

* FLs: pragmatic renderings of lambda calculus with syntactic sugar etc for convenience.* Important application: compilation via extended lambda calculi as ILs (eg, GHC)»» Moreover, central language features…

Page 47: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

λHaskell

LISP

SchemeClojure

ScalaStandard ML

OCaml

Erlang

F# CleanElm

AgdaRacket

Miranda

FPHope

IdISWIM

SASLSISAL

J

Thursday, 16 May 13

Central language features of FLs have their origin in the lambda calculus:* HO functions & closures: lambda* Purity & immutable structures: functional semantics* Types & semantics: logic & Curry-Howard

Page 48: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

λHaskell

LISP

SchemeClojure

ScalaStandard ML

OCaml

Erlang

F# CleanElm

AgdaRacket

Miranda

FPHope

IdISWIM

SASLSISAL

JPurity

Immutablestructures

Higher-orderfunctions

&closures

Well-definedsemantics

Types

Thursday, 16 May 13

Central language features of FLs have their origin in the lambda calculus:* HO functions & closures: lambda* Purity & immutable structures: functional semantics* Types & semantics: logic & Curry-Howard

Page 49: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

PurityImmutablestructures

Higher-orderfunctions

&closures

Well-definedsemantics

Types

Thursday, 16 May 13

* Language features lead to practical advantages* Some examples: <explain where they come from>»» Nevertheless, we can gain even more from the foundation of FP than these advantages…

Page 50: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

PurityImmutablestructures

Higher-orderfunctions

&closures

Well-definedsemantics

Types

Language features

Thursday, 16 May 13

* Language features lead to practical advantages* Some examples: <explain where they come from>»» Nevertheless, we can gain even more from the foundation of FP than these advantages…

Page 51: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

PurityImmutablestructures

Higher-orderfunctions

&closures

Well-definedsemantics

Types

Language features

Practical advantages

Thursday, 16 May 13

* Language features lead to practical advantages* Some examples: <explain where they come from>»» Nevertheless, we can gain even more from the foundation of FP than these advantages…

Page 52: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

PurityImmutablestructures

Higher-orderfunctions

&closures

Well-definedsemantics

Types

Concurrency&

parallelism

Language features

Practical advantages

Thursday, 16 May 13

* Language features lead to practical advantages* Some examples: <explain where they come from>»» Nevertheless, we can gain even more from the foundation of FP than these advantages…

Page 53: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

PurityImmutablestructures

Higher-orderfunctions

&closures

Well-definedsemantics

Types

Concurrency&

parallelism

Meta programming

Language features

Practical advantages

Thursday, 16 May 13

* Language features lead to practical advantages* Some examples: <explain where they come from>»» Nevertheless, we can gain even more from the foundation of FP than these advantages…

Page 54: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

PurityImmutablestructures

Higher-orderfunctions

&closures

Well-definedsemantics

Types

Concurrency&

parallelism

Meta programming Reuse

Language features

Practical advantages

Thursday, 16 May 13

* Language features lead to practical advantages* Some examples: <explain where they come from>»» Nevertheless, we can gain even more from the foundation of FP than these advantages…

Page 55: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

PurityImmutablestructures

Higher-orderfunctions

&closures

Well-definedsemantics

Types

Concurrency&

parallelism

Meta programming Reuse

Strongisolation

Language features

Practical advantages

Thursday, 16 May 13

* Language features lead to practical advantages* Some examples: <explain where they come from>»» Nevertheless, we can gain even more from the foundation of FP than these advantages…

Page 56: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

PurityImmutablestructures

Higher-orderfunctions

&closures

Well-definedsemantics

Types

Concurrency&

parallelism

Meta programming Reuse

Strongisolation Safety

Language features

Practical advantages

Thursday, 16 May 13

* Language features lead to practical advantages* Some examples: <explain where they come from>»» Nevertheless, we can gain even more from the foundation of FP than these advantages…

Page 57: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

PurityImmutablestructures

Higher-orderfunctions

&closures

Well-definedsemantics

Types

Concurrency&

parallelism

Meta programming Reuse

Strongisolation Safety

Language features

Practical advantagesFormal

reasoning

Thursday, 16 May 13

* Language features lead to practical advantages* Some examples: <explain where they come from>»» Nevertheless, we can gain even more from the foundation of FP than these advantages…

Page 58: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Part 2 From Language to Methodology

Thursday, 16 May 13

* Part 1: FP derives from natural, fundamental concept of computation...* ...which is the root of language conveniences and practical advantages.»» We want to take that concept one step further…

Page 59: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

“Functional programming as a development methodology,

not just a language category.”

Thursday, 16 May 13

» We want to use <read the statement>.* Use the principles of the lambda calculus for a software development methodology.[Engineering is based on science. This is the science of programming/software.]»» To do this…

Page 60: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

“The key to functional software development is a consistent

focus on properties.”

Thursday, 16 May 13

» We need to realise that <read the statement>* These can be "logical properties" or "mathematical properties".»» More precisely, …

Page 61: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Properties

Thursday, 16 May 13

* Properties are rigorous and precise. (NB: PL is a formal notation.)* We are not talking about specifying the entire behaviour of an applications. (Type signatures are properties.)* In one way or another, they leverage the formal foundation of the lambda calculus.»» Let's look at some examples…

Page 62: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Properties

Rigorous, formal or semi-formal specification

Cover one or more aspects of a program

Leverage the mathematics of the lambda calculus

Thursday, 16 May 13

* Properties are rigorous and precise. (NB: PL is a formal notation.)* We are not talking about specifying the entire behaviour of an applications. (Type signatures are properties.)* In one way or another, they leverage the formal foundation of the lambda calculus.»» Let's look at some examples…

Page 63: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

“A pure function is fully specified by a mapping of argument to

result values.”

Thursday, 16 May 13

» Read the statement.* Menas: if you know the arguments, you know the result.* (1) Nothing else influences the result; (2) the function doesn't do anything, but provide the result.* This is semi-formal, but easy to formalise.

Page 64: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

“A pure function is fully specified by a mapping of argument to

result values.”

Well known property

Thursday, 16 May 13

» Read the statement.* Menas: if you know the arguments, you know the result.* (1) Nothing else influences the result; (2) the function doesn't do anything, but provide the result.* This is semi-formal, but easy to formalise.

Page 65: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

map :: (a -> b) -> [a] -> [b]

eval :: Expr t -> t

n+m≡m+n : ∀ {n m : ℕ} -> m + n ≡ n + m

Thursday, 16 May 13

* map: well known* eval: type-safe evaluator with GADTs* Agda lemma: commutativity of addition»» Types are not just for statically typed languages…

Page 66: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Types are properties

map :: (a -> b) -> [a] -> [b]

eval :: Expr t -> t

n+m≡m+n : ∀ {n m : ℕ} -> m + n ≡ n + m

Thursday, 16 May 13

* map: well known* eval: type-safe evaluator with GADTs* Agda lemma: commutativity of addition»» Types are not just for statically typed languages…

Page 67: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Racket(Scheme dialect)

Thursday, 16 May 13

* HTDP encourages the use of function signatures as part of the design process.* It also uses data definitions (reminiscent of data type definitions)* Racket also supports checked "contracts"

Page 68: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

The Process: [..] 2. Write down a signature, [..]

Racket(Scheme dialect)

Thursday, 16 May 13

* HTDP encourages the use of function signatures as part of the design process.* It also uses data definitions (reminiscent of data type definitions)* Racket also supports checked "contracts"

Page 69: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

-- QuickCheckprop_Union s1 (s2 :: Set Int) =  (s1 `union` s2) ==? (toList s1 ++ toList s2)

Thursday, 16 May 13

* In formal specifications* But also useful for testing: QuickCheck* Popular specification-based testing framework»» And as the last example of a property…

Page 70: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Logic formulas

-- QuickCheckprop_Union s1 (s2 :: Set Int) =  (s1 `union` s2) ==? (toList s1 ++ toList s2)

Thursday, 16 May 13

* In formal specifications* But also useful for testing: QuickCheck* Popular specification-based testing framework»» And as the last example of a property…

Page 71: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

-- return a >>= k == k a -- m >>= return == m -- m >>= (\x -> k x >>= h) -- == (m >>= k) >>= h class Monad m where (>>=) :: m a -> (a -> m b) -> m b return :: a -> m a

Thursday, 16 May 13

* Monads: categorial structures that needs to obey certain laws.* Think of them as API patterns.

Page 72: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Algebraic and categorial structures

-- return a >>= k == k a -- m >>= return == m -- m >>= (\x -> k x >>= h) -- == (m >>= k) >>= h class Monad m where (>>=) :: m a -> (a -> m b) -> m b return :: a -> m a

Thursday, 16 May 13

* Monads: categorial structures that needs to obey certain laws.* Think of them as API patterns.

Page 73: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

I/O in Haskell

Thursday, 16 May 13

* Now that we have seen some examples of properties, ...»» ...let's look at an example of guiding a design by properties…

Page 74: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

I/O in Haskell

Example of an uncompromising pursuit of properties

Thursday, 16 May 13

* Now that we have seen some examples of properties, ...»» ...let's look at an example of guiding a design by properties…

Page 75: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

readName = let firstname = readString () in let surname = readString () in firstname ++ " " ++ surname

(not really Haskell)

Thursday, 16 May 13

* Read two strings from stdin and combine them.* In which order will firstname and surname be read? * Non-strict (or lazy) language: compute when needed»» Problem with I/O, as the following compiler optimisations demonstrate…

Page 76: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

readName = let firstname = readString () in let surname = readString () in firstname ++ " " ++ surname

(not really Haskell)

Haskell is a non-strict language

Thursday, 16 May 13

* Read two strings from stdin and combine them.* In which order will firstname and surname be read? * Non-strict (or lazy) language: compute when needed»» Problem with I/O, as the following compiler optimisations demonstrate…

Page 77: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

readName = let firstname = readString () in let surname = readString () in firstname ++ " " ++ surname

Thursday, 16 May 13

* Two occurences of the same lambda term must have the same meaning.

Page 78: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

readName = let firstname = readString () in let surname = readString () in firstname ++ " " ++ surname

Common subexpression elimination

firstname

Thursday, 16 May 13

* Two occurences of the same lambda term must have the same meaning.

Page 79: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

readName = let firstname = readString () in let surname = readString () in firstname ++ " " ++ surname

firstname = readString ()

surname = readString ()

Thursday, 16 May 13

* No data depencency between the two bindings

Page 80: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

readName = let firstname = readString () in let surname = readString () in firstname ++ " " ++ surname

firstname = readString ()

surname = readString ()

Reordering

Thursday, 16 May 13

* No data depencency between the two bindings

Page 81: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

readName = let firstname = readString () in let surname = readString () in firstname

Thursday, 16 May 13

* If a binding is not used, we should be able to eliminate it.* 1988: Haskell language committee faced the problem of mismatch between non-strictness and I/O»» They saw two options…

Page 82: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

readName = let firstname = readString () in let surname = readString () in firstname

Dead code elimination

Thursday, 16 May 13

* If a binding is not used, we should be able to eliminate it.* 1988: Haskell language committee faced the problem of mismatch between non-strictness and I/O»» They saw two options…

Page 83: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Option ❶

Destroy purity

Thursday, 16 May 13

»» To do so, they would need…

Page 84: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Destroy purity

Thursday, 16 May 13

» <Explain>

Page 85: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Destroy purity

Prohibit those code transformations

Enforce strict top to bottom evaluation of let bindings

Thursday, 16 May 13

» <Explain>

Page 86: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Destroy purity

Prohibit those code transformations

Enforce strict top to bottom evaluation of let bindingsNot a good idea!

Thursday, 16 May 13

» <Explain>

Page 87: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

WG 2.8, 1992

Thursday, 16 May 13

[This is not the real committee, but a large part.]* Didn't want to give up this property.* Non-strictness kept them honest.»» This left them with the second option…

Page 88: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

WG 2.8, 1992

Preserve those code transformations

Thursday, 16 May 13

[This is not the real committee, but a large part.]* Didn't want to give up this property.* Non-strictness kept them honest.»» This left them with the second option…

Page 89: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

WG 2.8, 1992

Preserve those code transformations

We want local reasoning

Thursday, 16 May 13

[This is not the real committee, but a large part.]* Didn't want to give up this property.* Non-strictness kept them honest.»» This left them with the second option…

Page 90: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

WG 2.8, 1992

Preserve those code transformations

We want local reasoning

Think about concurrency

Thursday, 16 May 13

[This is not the real committee, but a large part.]* Didn't want to give up this property.* Non-strictness kept them honest.»» This left them with the second option…

Page 91: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Keep purity!

WG 2.8, 1992

Preserve those code transformations

We want local reasoning

Think about concurrency

Thursday, 16 May 13

[This is not the real committee, but a large part.]* Didn't want to give up this property.* Non-strictness kept them honest.»» This left them with the second option…

Page 92: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Option ❷

Continuation-based & Stream-based I/O

Thursday, 16 May 13

»» I don't want to explain them in detail, but here is an example…

Page 93: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

readName :: [Response] -> ([Request], String)readName ~(Str firstname : ~(Str surname : _)) = ([ReadChan stdin, ReadChan stdin], firstname ++ " " ++ surname)

Thursday, 16 May 13

* Rather inconvenient programming model* Due to lack of a better idea, Haskell 1.0 to 1.2 used continuation-based and stream-based I/O»» Can't we do any better…

Page 94: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

readName :: [Response] -> ([Request], String)readName ~(Str firstname : ~(Str surname : _)) = ([ReadChan stdin, ReadChan stdin], firstname ++ " " ++ surname)

readName :: FailCont -> StrCont -> BehaviourreadName abort succ = readChan stdin abort (\firstname -> readChan stdin abort (\surname -> succ (firstname ++ " " ++ surname)))

Thursday, 16 May 13

* Rather inconvenient programming model* Due to lack of a better idea, Haskell 1.0 to 1.2 used continuation-based and stream-based I/O»» Can't we do any better…

Page 95: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

“What are the properties of I/O, of general stateful operations?”

Thursday, 16 May 13

* Let's take a step back.» Can we use properties to understand the nature of I/O?»» Let's characterise what stateful (imperative) computing is about…

Page 96: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Arguments Result

State changing function

Thursday, 16 May 13

* In addition to arguments and result...* ...state is threaded through.»» In the case of I/O…

Page 97: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

State State'

Arguments Result

State changing function

Thursday, 16 May 13

* In addition to arguments and result...* ...state is threaded through.»» In the case of I/O…

Page 98: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Arguments Result

I/O function

Thursday, 16 May 13

* The state is the whole world»» How can we formalise this…

Page 99: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Arguments Result

I/O function

Thursday, 16 May 13

* Categorial semantics of impure language features: properties of impure features* Lambda calculus with impure features* Characterise the meaning of effects»» How can we use that to write FPs…

Page 100: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Arguments Result

I/O function

Thursday, 16 May 13

* Categorial semantics of impure language features: properties of impure features* Lambda calculus with impure features* Characterise the meaning of effects»» How can we use that to write FPs…

Page 101: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Eugenio Moggi

Arguments Result

I/O functionMonad!

Thursday, 16 May 13

* Categorial semantics of impure language features: properties of impure features* Lambda calculus with impure features* Characterise the meaning of effects»» How can we use that to write FPs…

Page 102: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Eugenio Moggi

Thursday, 16 May 13

* Moggi's semantics is based on the lambda calculus* So, it ought to translate to FLs»» Finally, we can write our example program properly…

Page 103: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Eugenio Moggi

Thursday, 16 May 13

* Moggi's semantics is based on the lambda calculus* So, it ought to translate to FLs»» Finally, we can write our example program properly…

Page 104: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Eugenio Moggi

Philip Wadler -- return a >>= k == k a -- m >>= return == m -- m >>= (\x -> k x >>= h) -- == (m >>= k) >>= h class Monad m where (>>=) :: m a -> (a -> m b) -> m b return :: a -> m a

instance Monad IO where ...

Thursday, 16 May 13

* Moggi's semantics is based on the lambda calculus* So, it ought to translate to FLs»» Finally, we can write our example program properly…

Page 105: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

readName :: IO String readName = do firstname <- readString surname <- readString in return (firstname ++ " " ++ surname)

(Real Haskell!)

Thursday, 16 May 13

* Development oriented at properties* Solution has an impact well beyond Haskell I/O»» Functional software development usually doesn't mean to resort to abstract math…

Page 106: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Part 3 Applying the Methodology

Thursday, 16 May 13

* So far, we saw that the genesis of FP resolved around working with and exploiting logical & mathematical properties.»» To get a feel for using such properties, let us look at a concrete development effort, where we used properties in many flavours to attack a difficult problem…

Page 107: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Pure data parallelism

Thursday, 16 May 13

»» Good parallel programming environments are important, because of…

Page 108: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Pure data parallelism

Case study in functional software development

Thursday, 16 May 13

»» Good parallel programming environments are important, because of…

Page 109: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

multicore GPU

multicore CPU

Ubiquitous parallelism

Thursday, 16 May 13

* Today, parallelism is everywhere! <Explain>»» We would like a parallel programming environment with meeting the following goals…

Page 110: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Goal ➀

Exploit parallelism of commodity hardware easily:

Thursday, 16 May 13

* We are not aiming at supercomputers* Ordinary applications cannot afford the resources that go into the development of HPC apps.»» To this end…

Page 111: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Goal ➀

Performance is important, but…

…productivity is more important.

Exploit parallelism of commodity hardware easily:

Thursday, 16 May 13

* We are not aiming at supercomputers* Ordinary applications cannot afford the resources that go into the development of HPC apps.»» To this end…

Page 112: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Goal ➁

Semi-automatic parallelism:

Thursday, 16 May 13

* Not fully automatic: computers cannot parallelise algos & seq algos are inefficient on parallel hardware.* Explicit concurrency is hard, non-modular, and error prone.»» How can properties help us to achieve these two goals…

Page 113: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Programmer supplies a parallel algorithm, but

no explicit concurrency (no concurrency control, no races, no deadlocks).

Goal ➁

Semi-automatic parallelism:

Thursday, 16 May 13

* Not fully automatic: computers cannot parallelise algos & seq algos are inefficient on parallel hardware.* Explicit concurrency is hard, non-modular, and error prone.»» How can properties help us to achieve these two goals…

Page 114: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Three property-driven methods

Thursday, 16 May 13

Types: track purity, generate array representations, guide optimisationsState minimisation: localised state transformers, immutable structuresCombinators: parallelisable aggregate array operations, exploit algebraic properties, restricted language for special hardware

Page 115: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Three property-driven methods

Types

Thursday, 16 May 13

Types: track purity, generate array representations, guide optimisationsState minimisation: localised state transformers, immutable structuresCombinators: parallelisable aggregate array operations, exploit algebraic properties, restricted language for special hardware

Page 116: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Three property-driven methods

Types

State minimisation

Thursday, 16 May 13

Types: track purity, generate array representations, guide optimisationsState minimisation: localised state transformers, immutable structuresCombinators: parallelisable aggregate array operations, exploit algebraic properties, restricted language for special hardware

Page 117: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Three property-driven methods

Types

State minimisation

Combinators & embedded languages

Thursday, 16 May 13

Types: track purity, generate array representations, guide optimisationsState minimisation: localised state transformers, immutable structuresCombinators: parallelisable aggregate array operations, exploit algebraic properties, restricted language for special hardware

Page 118: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

multicore GPU

multicore CPU

Ubiquitious parallelism

Thursday, 16 May 13

»» What kind of code do we want to write for parallel hardware…

Page 119: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

smvm :: SparseMatrix -> Vector -> Vector smvm sm v = [: sumP (dotp sv v) | sv <- sm :]

Thursday, 16 May 13

Page 120: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

smvm :: SparseMatrix -> Vector -> Vector smvm sm v = [: sumP (dotp sv v) | sv <- sm :]

Thursday, 16 May 13

Page 121: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

smvm :: SparseMatrix -> Vector -> Vector smvm sm v = [: sumP (dotp sv v) | sv <- sm :]

2 1.5

5 36.574

1

sm vThursday, 16 May 13

Page 122: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

smvm :: SparseMatrix -> Vector -> Vector smvm sm v = [: sumP (dotp sv v) | sv <- sm :]

2 1.5

5 36.574

1

sm vThursday, 16 May 13

Page 123: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

smvm :: SparseMatrix -> Vector -> Vector smvm sm v = [: sumP (dotp sv v) | sv <- sm :]

2 1.5

5 36.574

1

sm vThursday, 16 May 13

Page 124: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

smvm :: SparseMatrix -> Vector -> Vector smvm sm v = [: sumP (dotp sv v) | sv <- sm :]

2 1.5

5 36.574

1

ΣΣΣΣΣ

sm vThursday, 16 May 13

Page 125: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

smvm :: SparseMatrix -> Vector -> Vector smvm sm v = [: sumP (dotp sv v) | sv <- sm :]

2 1.5

5 36.574

1

ΣΣΣΣΣ

sm vThursday, 16 May 13

Page 126: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

“Types ensure purity, purity ensures non-interference.”

Thursday, 16 May 13

* Functions that are not of monadic type are pure.* Pure functions can execute in any order, also in parallel.=> No concurrency control needed [Properties pay off — Types.]»» But we need more than a convenient notation…

Page 127: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

“Types ensure purity, purity ensures non-interference.”

Types

Thursday, 16 May 13

* Functions that are not of monadic type are pure.* Pure functions can execute in any order, also in parallel.=> No concurrency control needed [Properties pay off — Types.]»» But we need more than a convenient notation…

Page 128: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

High performance

Thursday, 16 May 13

* Performance is not the only goal, but it is a major goal.* Explain fluid flow.»» We can get good performance…

Page 129: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Thursday, 16 May 13

* Repa (blue) is on 7 CPU cores (two quad-core Xenon E5405 CPUs @ 2 GHz, 64-bit)* Accelerate (green) is on a Tesla T10 processor (240 cores @ 1.3 GHz)* Repa talk: Ben Lippmeier @ Thursday before lunch* Accelerate talk: Trevor McDonell @ Friday before lunch

Page 130: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Jos Stam's Fluid Flow Solver

Thursday, 16 May 13

* Repa (blue) is on 7 CPU cores (two quad-core Xenon E5405 CPUs @ 2 GHz, 64-bit)* Accelerate (green) is on a Tesla T10 processor (240 cores @ 1.3 GHz)* Repa talk: Ben Lippmeier @ Thursday before lunch* Accelerate talk: Trevor McDonell @ Friday before lunch

Page 131: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

“How do we achieve high performance from purely

functional code?”

Thursday, 16 May 13

»» This presents an inherent tension…

Page 132: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Unboxed,mutable arrays

C-like loops

Thursday, 16 May 13

»» We resolve this tension with local state…

Page 133: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Unboxed,mutable arrays

C-like loops

Performance

Thursday, 16 May 13

»» We resolve this tension with local state…

Page 134: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Unboxed,mutable arrays

C-like loops

Performance

Purefunctions

Thursday, 16 May 13

»» We resolve this tension with local state…

Page 135: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Unboxed,mutable arrays

C-like loops

Performance

Purefunctions

Parallelism &Optimisations

Thursday, 16 May 13

»» We resolve this tension with local state…

Page 136: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Unboxed,mutable arrays

C-like loops

Performance

Purefunctions

Parallelism &Optimisations

Thursday, 16 May 13

»» We resolve this tension with local state…

Page 137: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

map :: (Shape sh, Source r a) => (a -> b) -> Array r sh a -> Array D sh b

(Pure)

Thursday, 16 May 13

* We use a library of pure, parallel, aggregate operations* In Repa, types guide array representations»» Despite the pure interface, some combinators are internally impure…

Page 138: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Types

map :: (Shape sh, Source r a) => (a -> b) -> Array r sh a -> Array D sh b

(Pure)

Thursday, 16 May 13

* We use a library of pure, parallel, aggregate operations* In Repa, types guide array representations»» Despite the pure interface, some combinators are internally impure…

Page 139: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Local state

Thursday, 16 May 13

<Explain>* Program transformations and parallelisation on pure level* Then, unfold and optimise imperative program* Type system helps to get this right* Fusion

Page 140: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Local state

Allocate mutable array

Thursday, 16 May 13

<Explain>* Program transformations and parallelisation on pure level* Then, unfold and optimise imperative program* Type system helps to get this right* Fusion

Page 141: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Local state

Allocate mutable array

Initialise destructively

Thursday, 16 May 13

<Explain>* Program transformations and parallelisation on pure level* Then, unfold and optimise imperative program* Type system helps to get this right* Fusion

Page 142: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Local state

Allocate mutable array

Initialise destructively

Freeze!

Thursday, 16 May 13

<Explain>* Program transformations and parallelisation on pure level* Then, unfold and optimise imperative program* Type system helps to get this right* Fusion

Page 143: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Local state

Allocate mutable array

Initialise destructively

Freeze!

State minimisation

Thursday, 16 May 13

<Explain>* Program transformations and parallelisation on pure level* Then, unfold and optimise imperative program* Type system helps to get this right* Fusion

Page 144: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Local state

Allocate mutable array

Initialise destructively

Freeze!

State minimisationCombinators

Thursday, 16 May 13

<Explain>* Program transformations and parallelisation on pure level* Then, unfold and optimise imperative program* Type system helps to get this right* Fusion

Page 145: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Special hardware

Core i7 970CPU

NVIDIA GF100 GPU

12 THREADS24,576 THREADS

Thursday, 16 May 13

* Straight forward code generation is not suitable for all architectures»» GPUs are highly parallel, but also restricted in which operations are efficient…

Page 146: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

GPU's don't like

Thursday, 16 May 13

* We won't compile all of Haskell to GPUs anytime soon.

Page 147: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

GPU's don't like

SIMD divergence (conditionals)

Thursday, 16 May 13

* We won't compile all of Haskell to GPUs anytime soon.

Page 148: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

GPU's don't like

SIMD divergence (conditionals)

Recursion

Thursday, 16 May 13

* We won't compile all of Haskell to GPUs anytime soon.

Page 149: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

GPU's don't like

SIMD divergence (conditionals)

Recursion

Function pointers

Thursday, 16 May 13

* We won't compile all of Haskell to GPUs anytime soon.

Page 150: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

GPU's don't like

SIMD divergence (conditionals)

Recursion

Function pointers

Automatic garbage collection

Thursday, 16 May 13

* We won't compile all of Haskell to GPUs anytime soon.

Page 151: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

dotpAcc :: Vector Float -> Vector Float -> Acc (Scalar Float)

dotpAcc xs ys = let xs' = use xs ys' = use ys in fold (+) 0 (zipWith (*) xs' ys')

Thursday, 16 May 13

* We special purpose compile embedded code.

Page 152: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

dotpAcc :: Vector Float -> Vector Float -> Acc (Scalar Float)

dotpAcc xs ys = let xs' = use xs ys' = use ys in fold (+) 0 (zipWith (*) xs' ys')

Acc marks embedded computations

Thursday, 16 May 13

* We special purpose compile embedded code.

Page 153: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

dotpAcc :: Vector Float -> Vector Float -> Acc (Scalar Float)

dotpAcc xs ys = let xs' = use xs ys' = use ys in fold (+) 0 (zipWith (*) xs' ys')

Acc marks embedded computations

use embeds values

Thursday, 16 May 13

* We special purpose compile embedded code.

Page 154: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

dotpAcc :: Vector Float -> Vector Float -> Acc (Scalar Float)

dotpAcc xs ys = let xs' = use xs ys' = use ys in fold (+) 0 (zipWith (*) xs' ys')

Acc marks embedded computations

use embeds values

Embedded language

Thursday, 16 May 13

* We special purpose compile embedded code.

Page 155: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

types >< state languages

Thursday, 16 May 13

Page 156: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Functional software development is

property-driven development

Functional programming is fundamental to computing

types >< state languages

Thursday, 16 May 13

Page 157: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Thank you!

Thursday, 16 May 13

Page 158: Do Extraterrestrials Use Functional Programming?...Manuel M T Chakravarty University of New South Wales Do Extraterrestrials Use Functional Programming? mchakravarty α TacticalGrace

Images from

http://wikipedia.org

http://openclipart.org

http://dx.doi.org/10.1145/1238844.1238856

Thursday, 16 May 13