A quick overview of epsilon - a functional language implementation - LCR LIPN - Université Paris 13 Luca Saiu <positron@gnu.org> 2007-05-29
Introducing myself I come from Pisa... I come from Pisa... Now I'm working on Marionnet with Jean-Vincent Loddo: with Jean-Vincent Loddo: Now I'm working on Para-virtualization Para-virtualization Networks Networks Kernel programming Kernel programming GUIs in a functional language GUIs in a functional language Luca Saiu <positron@gnu.org> 2007-05-29
GNU epsilon A functional functional programming language programming language A Usable Usable in practice... ...and also clean and minimal ...and also clean and minimal Efficient implementation Efficient implementation Free software and part of the GNU Project Quite a long history Quite a long history Started in 2001, implemented Started in 2001, implemented three times three times Luca Saiu <positron@gnu.org> 2007-05-29
Why functional An extremely interesting alternative paradigm: An extremely interesting alternative paradigm: Very Very high-level high-level Safe, when statically-typed Safe, when statically-typed Clean semantics Clean semantics: easy to reason about : easy to reason about Challenging: efficient compilation is nontrivial Luca Saiu <positron@gnu.org> 2007-05-29
Why another language Every powerful language has three mechanisms [...] [...] : : Every powerful language has three mechanisms primitive expressions primitive expressions , , which represent the simplest entities the language is concerned with, which represent the simplest entities the language is concerned with, means of combination means of combination , , by which compound elements are built from simpler ones, and by which compound elements are built from simpler ones, and means of abstraction means of abstraction , , by which compound elements can be named and manipulated as units. by which compound elements can be named and manipulated as units. — — Abelson and Sussman, SICP Abelson and Sussman, SICP All All the existing programming languages I know of the existing programming languages I know of leave to desire in their leave to desire in their means of abstraction means of abstraction (but Lisp macros are a step in the right direction) Luca Saiu <positron@gnu.org> 2007-05-29
Better means of abstraction User-definable: User-definable: Macros Macros pattern-matching pattern-matching Global transforms Global transforms SPS, CPS SPS, CPS type checking type checking Semantic Semantic constraints constraints and and attributes attributes type inference type inference ...and language “primitives” ...and language “primitives” definable in C definable in C Luca Saiu <positron@gnu.org> 2007-05-29
epsilon epsilon is free software and part of the GNU Project (officially approved by Richard Stallman) As of now: ~60,000 lines Currently implemented in C Compilation into C code and bytecode interpretation Programming tools: epsilonlex, epsilonyacc “Usual” features: omega-order, first-class functions, modules... Usable (ICFPc) Luca Saiu – 29-05-2007
epsilon: future directions “Stratified” implementation Compilation via source-to-source transforms... ...into a minimal purely -functional language... ...then into very low-level abstract machine code epsilon macro expansion, constraints, attributes first-class continuations, middle language side effects √ transforms (CPS, SPS), optimizations (Ocaml interpreter) √ core language purely functional assembly-like with eAML √ primitives in C code generation C Scheme Bootstrapped via OCaml Luca Saiu – 29-05-2007
For more information For more information... http://www-lipn.lipn.univ-paris13.fr/~saiu http://www.gnu.org/software/epsilon positron@gnu.org saiu@lipn.univ-paris13.fr Thanks. Luca Saiu – 2007-05-29
Recommend
More recommend