On this page:
envlang:   an experimental language with first-class environments
8.13.0.2

envlang: an experimental language with first-class environments🔗ℹ

Suzanne Soy <racket@suzanne.soy>

 (require envlang/rkt) package: envlang

An implementation which "escapes" to the Racket library for a certain number of basic building blocks

#lang s-exp envlang/rkt

See test-rkt for examples

 (require envlang/tiny) package: envlang

An implementation which starts with a tiny set of primitives, and builds the basic building blocks using those. The building blocks (lists, strings, associative tables) are built in a naive and inefficient way.

#lang s-exp envlang/tiny

    1 Tests and examples for envlang/tiny

      1.1 Identity

      1.2 Dummy value

      1.3 Example: identity applied to identity

      1.4 False

      1.5 True

        1.5.1 Boolean usage example: if true

        1.5.2 Boolean usage example: if false

      1.6 Pairs

        1.6.1 Fst

        1.6.2 Snd

      1.7 Either

        1.7.1 Left

        1.7.2 Right

      1.8 If

        1.8.1 Match "either"

      1.9 Null

      1.10 Cons

        1.10.1 Match "list"

      1.11 null?

      1.12 Car

      1.13 Cdr

      1.14 Zero

      1.15 Not

      1.16 And

      1.17 Or

      1.18 Equal bools

      1.19 Z combinator

      1.20 Equality of lists

      1.21 Associative lists

      1.22 environment-manipulation functions

      1.23 todo

    2 Tests and examples for envlang/rkt

      2.1 Identity

    3 Envlang @ racketfest

      3.1 Use cases for macros

        3.1.1 Environment manipulation

        3.1.2 Control flow

        3.1.3 Syntactic sugar

        3.1.4 Optimisations

        3.1.5 Code analysis

      3.2 Overview of the semantics

      3.3 First-class solutions

        3.3.1 Environment manipulation

        3.3.2 Control flow

        3.3.3 Syntactic sugar

          3.3.3.1 Identifiers with different meanings

          3.3.3.2 Extra parentheses

          3.3.3.3 Infix

          3.3.3.4 Manipulating identifiers

      3.4 Compile-time transformations

      3.5 Code analysis

        3.5.1 Type checking

        3.5.2 Implemented within the language

      3.6 Example use