rhine overview of rhine
play

Rhine Overview of Rhine - Lisp style language - Automatic type - PowerPoint PPT Presentation

Rhine Overview of Rhine - Lisp style language - Automatic type inspired by Clojure conversion - S-Expressions - First class functions - Built on top of LLVM - External C bindings - Dynamic typing - Types - Functional features Example:


  1. Rhine

  2. Overview of Rhine - Lisp style language - Automatic type inspired by Clojure conversion - S-Expressions - First class functions - Built on top of LLVM - External C bindings - Dynamic typing - Types - Functional features

  3. Example: Fibonacci (defn fib [n] (if (= n 0) 0 (if (= n 1) 1 (+ (fib (- n 1)) (fib (- n 2))))))

  4. Example: Map! (defn map [f coll] (if (not (= [] coll)) (cons (f (first coll)) (map f (rest coll))) []))

  5. Implementation - OCaml LLVM bindings - LLVM arrays/vectors are fixed length, not used - Arrays can contain any type - Variable length arrays supported

  6. Implementation - value_t is the structure behind dynamic typing - Contains Integers, Bools, Strings, Arrays, Array length, Doubles - Function pointers are stored in value_t - Type conversion

  7. Implementation - defn generates LLVM functions directly - Nested and recursive let is supported - def uses global constant + initializer function - Top level statements are generated as functions with zero arguments and are always run, like main

  8. Pipeline

  9. Summary and lessons learned - Summer class is really short - LLVM is really hard - Features of Lisp look nice abstractly but are difficult to implement

  10. Future additions - Garbage collection, value_t is malloc'd but never free'd currently - Variable number of arguments for functions being passed around - Functions that support varargs - Connection to text editor

  11. Demo!

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