lambda calculus
play

Lambda Calculus Prof. Tom Austin San Jos State University Minimum - PowerPoint PPT Presentation

CS 252: Advanced Programming Language Principles Lambda Calculus Prof. Tom Austin San Jos State University Minimum complete programming language? WARNING: I expect you to remember every construct of this language for exams Lambda


  1. CS 252: Advanced Programming Language Principles Lambda Calculus Prof. Tom Austin San José State University

  2. Minimum complete programming language?

  3. WARNING: I expect you to remember every construct of this language for exams

  4. Lambda Calculus expressions e ::= expressions: x variables | ( λ x.e) lambda abstractions | e e function application We could have just said "function", but we want to sound cool

  5. Lambda Calculus values v ::= values: ( λ x.e) lambda abstractions When our program finishes running, it returns some complex function as its "value"

  6. Function application Suppose we have a function: ( λ x.E) v replaces x Where E is some complex expression. wherever it How do we evaluate: occurs in E à ( λ x.E) v E[x->v]

  7. Small step semantics for λ -calculus (in-class)

  8. Operational Semantics [Ctxt1] e1 -> e1' e1 e2 -> e1' e2 [Ctxt2] e2 -> e2' ( λ x.e) e2 -> ( λ x.e) e2' [Call] ( λ x.e) v -> e[x->v]

  9. Example: Identity Function ( λ x.x) ( λ a. λ b.a) à x[x->( λ a. λ b.a)] à ( λ a. λ b.a)

  10. When should we evaluate function arguments?

  11. Strict Evaluation Strategies Evaluate function arguments first • Call-by-value: copy of the parameter is passed • Call-by-reference: implicit reference is passed

  12. Lazy Evaluation Strategies Substitute arguments in function body • Call-by-name: re-evaluate the argument each time • Call-by-need: memoizes parameter value after use

  13. How powerful is this language?

  14. The lambda-calculus is Turing complete . You can also implement the λ -calculus w/ a Turing machine In other words, the two are equal in power

  15. Translating λ -calc to Haskell Lambda-calculus Haskell x x ( λ x.e) (\x -> e) e e e e

  16. Extending the lambda calculus (in class)

  17. Lab: Develop new features in the Lambda Calculus using Haskell Details on Canvas. Starter code is available on the course website.

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend