Skip to content
Pannous edited this page Sep 15, 2021 · 3 revisions

block, code and closure are very similar concepts:

Code is Data that is charged.

Charging depends on assignment:
f : now # uncharged data, evaluated only when f() or f! occurs, or via full evaluation with !!
f := now # semi charged := evaluated upon normal evaluation of the parent context
def f:{now()} # charged code, evaluated upon partial evaluation of the parent context
f = now # charged symbol/variable: evaluated to the time whenever the symbol f occurs
f = now # resolved to current time immediately in the REPL, or whenever f! occurs

See evaluation for details.

While code can visually appear in different forms, under the hood these are identical after parsing

square := it * it
square a number := number times number
to square a number {
    return number times number
}
(def square (number x) (times x x)) // lispy notation

Expressions can be grouped as normal lists, however curly braces {} are the preferred enclosure.

Home

Philosophy

data & code blocks

features

inventions

evaluation

keywords

iteration

tasks

examples

todo : bad ideas and open questions

⚠️ specification and progress are out of sync

Clone this wiki locally