Pico Scheme

From Esolang
Jump to navigation Jump to search
Pico Scheme
Paradigm(s) functional
Designed by Joshua Cogliati
Appeared in 2021
Computational class Turing complete
Reference implementation rust pr7rs
Influenced by Scheme
File extension(s) .scm

Pico Scheme is a minimalist purely functional version of Scheme, with all non-functional features removed. The syntax and semantics are defined both informally and in formal extended BNF and denotational semantics.

Abstract Syntax

  • K ∈ Con: constants, including quotations
  • I ∈ Ide: identifiers (variables)
  • E ∈ Exp: expressions
  • ∆ ∈ Dec: declarations

Exp → K | I | (E0 E*) | (lambda (I*) ∆* E0) | (lambda I ∆* E0) | (if E0 E1 E2) | (if E0 E1 )

Dec → (define I E0 )


Examples

Hello, World!

 (display '(Hello World!))
 (newline)

Output:

 (Hello World!)

Y combinator and Factorial

 (let ((Y (lambda (phi)
            ((lambda (f) (f f))
             (lambda (f)
                (phi (lambda x (apply (f f) x))))))))
    (let ((fact
           (Y (lambda (fact)
                (lambda (n)
 	    	       (if (< n 2) 1
                  (* n (fact (- n 1)))))))))
       (fact 5)))

External resources