1 / 16

Introduction to Implementation in Functional Programming: Memory Management and Graph Reduction

This lecture integrates critical concepts of implementation in functional programming, discussing the differences between lambda calculus and combinators. Key topics include graph reduction, abstract machines, automatic memory management, and garbage collection. The presentation emphasizes compiler functionality, highlighting how languages like Miranda (lazy) and SML (strict) operate within different memory allocation contexts. It also delves into challenges such as memory fragmentation and resource limitation, offering insights into efficient programming practices within these frameworks.

fenella
Télécharger la présentation

Introduction to Implementation in Functional Programming: Memory Management and Graph Reduction

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. GC16/3011 Functional ProgrammingLecture 16Introduction to Implementation

  2. Contents • What is “implementation”? • Lambda calculus versus combinators • Graph Reduction • “Abstract machines” • Automatic Memory Management • Memory allocation • Garbage Collection • Parallel Graph Reduction

  3. Combinators Compiler translates to: l-calculus string tree graph = instruction set memory management Language implementation Language (e.g. Miranda (lazy) or SML (strict)) Fixed set or Variable set combinator rewriting/reduction environment reduction graph reduction AMs: interpreted/compiled/strict/lazy

  4. Language implementation Language (e.g. Miranda (lazy) or SML (strict)) Compiler translates to: l-calculus

  5. string tree graph Language implementation Language (e.g. Miranda (lazy) or SML (strict)) Compiler translates to: l-calculus

  6. string tree graph Language implementation Language (e.g. Miranda (lazy) or SML (strict)) Compiler translates to: l-calculus environment reduction

  7. string tree graph Language implementation Language (e.g. Miranda (lazy) or SML (strict)) Compiler translates to: l-calculus environment reduction graph reduction

  8. string tree graph Language implementation Language (e.g. Miranda (lazy) or SML (strict)) Compiler translates to: l-calculus environment reduction graph reduction AMs: interpreted/compiled/strict/lazy

  9. Combinators Compiler translates to: l-calculus string tree graph Language implementation Language (e.g. Miranda (lazy) or SML (strict)) environment reduction graph reduction interpreted/compiled/strict/lazy AMs: interpreted/compiled/strict/lazy

  10. Combinators Compiler translates to: l-calculus string tree graph Language implementation Language (e.g. Miranda (lazy) or SML (strict)) Fixed set or Variable set environment reduction graph reduction interpreted/compiled/strict/lazy AMs: interpreted/compiled/strict/lazy

  11. Combinators Compiler translates to: l-calculus string tree graph Language implementation Language (e.g. Miranda (lazy) or SML (strict)) Fixed set or Variable set environment reduction graph reduction interpreted/compiled/strict/lazy AMs: interpreted/compiled/strict/lazy

  12. Combinators Compiler translates to: l-calculus string tree graph = instruction set Language implementation Language (e.g. Miranda (lazy) or SML (strict)) Fixed set or Variable set environment reduction graph reduction interpreted/compiled/strict/lazy AMs: interpreted/compiled/strict/lazy

  13. Combinators Compiler translates to: l-calculus string tree graph = instruction set Language implementation Language (e.g. Miranda (lazy) or SML (strict)) Fixed set or Variable set combinator rewriting/reduction environment reduction graph reduction interpreted/compiled/strict/lazy AMs: interpreted/compiled/strict/lazy

  14. Combinators Compiler translates to: l-calculus string tree graph = instruction set memory management Language implementation Language (e.g. Miranda (lazy) or SML (strict)) Fixed set or Variable set combinator rewriting/reduction environment reduction graph reduction interpreted/compiled/strict/lazy AMs: interpreted/compiled/strict/lazy

  15. Memory management • Recycling / reusing memory • Limited resources • Programmer does not control placement of data in memory • Issues: • Memory Allocation • Garbage Identification • Garbage Collection • Fragmentation

  16. Summary • What is “implementation”? • Lambda calculus versus combinators • Graph Reduction • “Abstract machines” • Automatic Memory Management • Memory allocation • Garbage Collection • Parallel Graph Reduction

More Related