Un Lisp para V, con llamadas de cola que de verdad son gratis

Un pequeno dialecto de Lisp sobre una maquina CEK explicita. Una llamada en posicion de cola reutiliza su marco en vez de apilar otro, asi que un bucle es un bucle y no una pila que crece hasta morir.

Leer la documentacion Codigo

Esta seccion aun no esta traducida a tu idioma; se muestra en ingles. Las traducciones son bienvenidas.

A taste

(define (fib n)
  (if (< n 2)
      n
      (+ (fib (- n 1))
         (fib (- n 2)))))

(fib 20)          ;=> 6765

Esta seccion aun no esta traducida a tu idioma; se muestra en ingles. Las traducciones son bienvenidas.

Que es

Real tail calls

A quarter of a million iterations end with an empty continuation stack. Mutual recursion tail-calls too, which is the part most trampolines skip.

An explicit machine

Evaluation is a data structure you can inspect, not a recursive function you have to trust. Every step is counted, and every limit is a field you can set.

Embeddable by shape

The machine is a library with no global state. print output is collected into a field, so a host can capture it rather than fight it.

Esta seccion aun no esta traducida a tu idioma; se muestra en ingles. Las traducciones son bienvenidas.

Where it stands

Working: the reader, closures, arithmetic, branching, loop, dotimes, letrec, cond, case, and proper tail calls including mutual recursion.

Not yet: let*, rest parameters, callable keywords, modules, and macros. Each one is named in the repository rather than quietly missing.