1 / 16

Functional programming {week 12}

The College of Saint Rose CIS 433 – Programming Languages David Goldschmidt, Ph.D. Functional programming {week 12}. from Concepts of Programming Languages , 9th edition by Robert W. Sebesta, Addison-Wesley, 2010, ISBN 0-13-607347-6. Von Neumann architecture.

zarifa
Download Presentation

Functional programming {week 12}

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. The College of Saint Rose CIS 433 – Programming Languages David Goldschmidt, Ph.D. Functional programming{week 12} from Concepts of Programming Languages, 9th edition by Robert W. Sebesta, Addison-Wesley, 2010, ISBN 0-13-607347-6

  2. Von Neumann architecture • Imperative Languages • Data and programs are both stored in memory • Variables mimic memory • Assignment statements • Arithmetic operations • Iterative repetition • Control structures • etc.

  3. History

  4. Functional language design • The design of imperative languages is based directly on the von Neumann architecture • Efficiency is a primary concern • Variables are abstractions of memory locations • The design of functional languagesis based directly on mathematical functions • A solid theoretical basis more natural to users • Minimally concerned with machine architecture

  5. Mathematical functions (i) • A mathematical function is a mapping ofmembers from one set (the domain) tomembers of another set (the range) • Parameters represent anymember of the domain • Once set, a parameter isfixedto represent exactly one value during the evaluation of the mapping expression # Python def cube( x ): return x * x * x

  6. Mathematical functions (ii) • Mathematical functions define values whereas typical programming language functions producevalues function name function parameter(s) cube(x) ≡ x * x * x, where x is a real number “is defined as” mapping expression

  7. Lambda expressions (i) • A lambda expression specifies the parameters and mapping expression of a function • Essentially a nameless function • During evaluation, parameter x is bound to a particular member of the domain # Python lambda x:x*x*x (x)x * x * x mapping expression function parameter(s)

  8. Lambda expressions (ii) • The lambda expression is the function itself • Apply the expression to one or more parameters ((x)x * x * x)(4) # Python (lambda x:x*x*x)(4) ((x,y)x * y)(8,7) # Python (lambda x,y:x*y)(8,7)

  9. Functional forms • A functional form is a higher-order function that either takes functions as parameters oryields functions as its results (or both) • Example: the apply-to-all(α) functional form cube(x) ≡ x * x * x, where x is a real number α( cube, (3, 5, 2) ) ===> (27, 125, 8) # Python map( cube, [3, 5, 2] ) map( math.sqrt, [2, 3, 4, 5] ) map( lambda x,y:x+y, [3, 4, 5], [6, 7, 8] )

  10. Functional languages (i) • In imperative languages,operations are performedand results are stored invariables for later use • Management of variables is a constant concern and source of complexity (and bugs!) • Functions in imperative languagehave side effects

  11. Functional languages (ii) • Functional programming languages mimicmathematical functions and mappings to the extent possible • The basic process of computationis fundamentally different than inimperative languages • No flow of control • No variables

  12. Who needs variables? • Write a program to calculate n-factorial • The input argument n is your only variable { 1 if n=0 nxfactorial(n– 1) if n> 0 factorial(n) ≡

  13. LISP (LISt Processing) • LISP is a functional language designedat MIT by John McCarthy in 1958 • Research in artificial intelligencerequired a language to: • Process data in dynamic lists • Support symbolic computation(rather than numeric)

  14. LISP data structures • LISP has two data structures: • Atom: either a symbol or a numeric literal • List: a sequence of atoms and/or lists (A B C D) NIL (A (B C) D (E (F G)))

  15. Scheme • Scheme was developed at MIT in the 1970s to be a cleaner and simpler version of LISP • Scheme uses an interpreter and built-in IDE • Literals evaluate to themselves • Scheme is available as Racketat http://racket-lang.org

  16. What next? • Read and study Chapter 15 • Download Racket • Do Exercises at the end of Chapter 15

More Related