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

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

Suzanne Soy <racket@suzanne.soy>

 (requireenvlang/rkt) package:envlang

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

#langs-expenvlang/rkt

See test-rkt for examples

 (requireenvlang/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.

#langs-expenvlang/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

 
close