A quick overview of epsilon - a functional language implementation - - PowerPoint PPT Presentation

a quick overview of
SMART_READER_LITE
LIVE PREVIEW

A quick overview of epsilon - a functional language implementation - - PowerPoint PPT Presentation

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


slide-1
SLIDE 1

A quick overview of epsilon

  • a functional language implementation -

Luca Saiu <positron@gnu.org> 2007-05-29

LCR LIPN - Université Paris 13

slide-2
SLIDE 2

Introducing myself

Luca Saiu <positron@gnu.org> 2007-05-29

I come from Pisa... I come from Pisa... Para-virtualization Para-virtualization Networks Networks Kernel programming Kernel programming GUIs in a functional language GUIs in a functional language Now I'm working on Now I'm working on Marionnet with Jean-Vincent Loddo: with Jean-Vincent Loddo:

slide-3
SLIDE 3

GNU epsilon

Luca Saiu <positron@gnu.org> 2007-05-29

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 A A functional functional programming language programming language Quite a long history Quite a long history Started in 2001, implemented Started in 2001, implemented three times three times

slide-4
SLIDE 4

Why functional

Luca Saiu <positron@gnu.org> 2007-05-29

Very Very high-level high-level Clean semantics Clean semantics: easy to reason about : easy to reason about Safe, when statically-typed Safe, when statically-typed Challenging: efficient compilation is nontrivial An extremely interesting alternative paradigm: An extremely interesting alternative paradigm:

slide-5
SLIDE 5

Why another language

Luca Saiu <positron@gnu.org> 2007-05-29

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)

Every powerful language has three mechanisms Every powerful language has three mechanisms [...] [...]: : — — Abelson and Sussman, SICP Abelson and Sussman, SICP 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.

slide-6
SLIDE 6

Better means of abstraction

Luca Saiu <positron@gnu.org> 2007-05-29

Macros Macros Semantic Semantic constraints constraints and and attributes attributes User-definable: User-definable: Global transforms Global transforms SPS, CPS SPS, CPS pattern-matching pattern-matching type checking type checking type inference type inference ...and language “primitives” ...and language “primitives” definable in C definable in C

slide-7
SLIDE 7

epsilon

Luca Saiu – 29-05-2007

epsilon is free software and part of the GNU Project (officially approved by Richard Stallman) Currently implemented in C ~60,000 lines Compilation into C code and bytecode interpretation Programming tools: epsilonlex, epsilonyacc Usable As of now: (ICFPc) “Usual” features: omega-order, first-class functions, modules...

slide-8
SLIDE 8

epsilon: future directions

Luca Saiu – 29-05-2007

Compilation via source-to-source transforms... “Stratified” implementation ...into a minimal purely-functional language... ...then into very low-level abstract machine code epsilon middle language core language eAML C Scheme Bootstrapped via OCaml

assembly-like with primitives in C purely functional

first-class continuations, side effects macro expansion, constraints, attributes transforms (CPS, SPS), optimizations code generation

√ √

(Ocaml interpreter) √

slide-9
SLIDE 9

For more information

Luca Saiu – 2007-05-29

positron@gnu.org http://www.gnu.org/software/epsilon saiu@lipn.univ-paris13.fr For more information... http://www-lipn.lipn.univ-paris13.fr/~saiu Thanks.