Working on the docs.

The nbconvert tool has different behaviour now, so the HTML versions of
the notebooks look different.
This commit is contained in:
sforman
2023-07-27 08:55:43 -07:00
parent 9ca9239738
commit 0a1b150eb5
43 changed files with 463841 additions and 483328 deletions
+31
View File
@@ -0,0 +1,31 @@
Joy
- Motivation
- Simple, elegant, useful, combines good features of Lisp and Forth.
- "Provably Correct Constructs" Margaret Hamilton, James Martin
- Backus' Functional Programming (doing math to derive programs)
- A brief introduction to Joy
- the language
- stack, literals
- functions
- combinators
- the runtime
- CLI interpreters
- Jupyter Notebook kernel
- Extensions?
- "Snippets" [hash offset length]
- Numerical Tower
- additional datatypes
- "under the hood" optimizing
- Implementation of Joy Interpreters
- Compare and contrast Py, Nim, OCaml, Prolog
- Categorical Paradigm
- Symbolic Interpreter
- Constraint-based Interpreter
- "Calculator Mode" Interpreter
- Type Checking and Inference
- Compiling
- Compilers (Work-in-Progress)
- To Python (or other "high" level langauges)
- To machine code or at least e.g. LLVM IR.
- Prolog research on compilers
+165
View File
@@ -0,0 +1,165 @@
Phase 0: build the initial program:
5 • range_to_zero
5 • unit [down_to_zero] infra
[5] • [down_to_zero] infra
[5] [down_to_zero] • infra
Phase 1: It is a while loop:
5 • down_to_zero [] swaack
5 • [0 >] [dup --] while [] swaack
5 [0 >] • [dup --] while [] swaack
5 [0 >] [dup --] • while [] swaack
Phase 2: While loop converts to loop loop:
5 [0 >] [dup --] • swap nulco dupdipd concat loop [] swaack
5 [dup --] [0 >] • nulco dupdipd concat loop [] swaack
5 [dup --] [0 >] • [nullary] cons dupdipd concat loop [] swaack
5 [dup --] [0 >] [nullary] • cons dupdipd concat loop [] swaack
5 [dup --] [[0 >] nullary] • dupdipd concat loop [] swaack
5 [dup --] [[0 >] nullary] • dup dipd concat loop [] swaack
5 [dup --] [[0 >] nullary] [[0 >] nullary] • dipd concat loop [] swaack
5 • [0 >] nullary [dup --] [[0 >] nullary] concat loop [] swaack
Phase 3: Compute first loop Boolean:
5 [0 >] • nullary [dup --] [[0 >] nullary] concat loop [] swaack
5 [0 >] • [stack] dip infra first [dup --] [[0 >] nullary] concat loop [] swaack
5 [0 >] [stack] • dip infra first [dup --] [[0 >] nullary] concat loop [] swaack
5 • stack [0 >] infra first [dup --] [[0 >] nullary] concat loop [] swaack
5 [5] • [0 >] infra first [dup --] [[0 >] nullary] concat loop [] swaack
5 [5] [0 >] • infra first [dup --] [[0 >] nullary] concat loop [] swaack
5 • 0 > [5] swaack first [dup --] [[0 >] nullary] concat loop [] swaack
5 0 • > [5] swaack first [dup --] [[0 >] nullary] concat loop [] swaack
5 0 • gt [5] swaack first [dup --] [[0 >] nullary] concat loop [] swaack
true • [5] swaack first [dup --] [[0 >] nullary] concat loop [] swaack
true [5] • swaack first [dup --] [[0 >] nullary] concat loop [] swaack
5 [true] • first [dup --] [[0 >] nullary] concat loop [] swaack
5 true • [dup --] [[0 >] nullary] concat loop [] swaack
Phase 4a: Finish constructing main body of loop (this function [dup -- [0 >] nullary] seems easily compilable.):
5 true [dup --] • [[0 >] nullary] concat loop [] swaack
5 true [dup --] [[0 >] nullary] • concat loop [] swaack
5 true [dup -- [0 >] nullary] • loop [] swaack
Phase 4b: Enter main body of loop:
5 • dup -- [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 5 • -- [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 5 • 1 - [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 5 1 • - [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 5 1 • sub [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 • [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 [0 >] • nullary [dup -- [0 >] nullary] loop [] swaack
5 4 [0 >] • [stack] dip infra first [dup -- [0 >] nullary] loop [] swaack
5 4 [0 >] [stack] • dip infra first [dup -- [0 >] nullary] loop [] swaack
5 4 • stack [0 >] infra first [dup -- [0 >] nullary] loop [] swaack
5 4 [4 5] • [0 >] infra first [dup -- [0 >] nullary] loop [] swaack
5 4 [4 5] [0 >] • infra first [dup -- [0 >] nullary] loop [] swaack
5 4 • 0 > [4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 0 • > [4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 0 • gt [4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 true • [4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 true [4 5] • swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 [true 5] • first [dup -- [0 >] nullary] loop [] swaack
5 4 true • [dup -- [0 >] nullary] loop [] swaack
5 4 true [dup -- [0 >] nullary] • loop [] swaack
5 4 • dup -- [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 4 • -- [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 4 • 1 - [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 4 1 • - [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 4 1 • sub [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 • [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 [0 >] • nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 [0 >] • [stack] dip infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 [0 >] [stack] • dip infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 • stack [0 >] infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 [3 4 5] • [0 >] infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 [3 4 5] [0 >] • infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 • 0 > [3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 0 • > [3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 0 • gt [3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 true • [3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 true [3 4 5] • swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 [true 4 5] • first [dup -- [0 >] nullary] loop [] swaack
5 4 3 true • [dup -- [0 >] nullary] loop [] swaack
5 4 3 true [dup -- [0 >] nullary] • loop [] swaack
5 4 3 • dup -- [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 3 • -- [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 3 • 1 - [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 3 1 • - [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 3 1 • sub [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 • [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 [0 >] • nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 [0 >] • [stack] dip infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 [0 >] [stack] • dip infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 • stack [0 >] infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 [2 3 4 5] • [0 >] infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 [2 3 4 5] [0 >] • infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 • 0 > [2 3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 0 • > [2 3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 0 • gt [2 3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 true • [2 3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 true [2 3 4 5] • swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 [true 3 4 5] • first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 true • [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 true [dup -- [0 >] nullary] • loop [] swaack
5 4 3 2 • dup -- [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 2 • -- [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 2 • 1 - [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 2 1 • - [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 2 1 • sub [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 • [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 [0 >] • nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 [0 >] • [stack] dip infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 [0 >] [stack] • dip infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 • stack [0 >] infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 [1 2 3 4 5] • [0 >] infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 [1 2 3 4 5] [0 >] • infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 • 0 > [1 2 3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 • > [1 2 3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 • gt [1 2 3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 true • [1 2 3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 true [1 2 3 4 5] • swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 [true 2 3 4 5] • first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 true • [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 true [dup -- [0 >] nullary] • loop [] swaack
5 4 3 2 1 • dup -- [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 1 • -- [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 1 • 1 - [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 1 1 • - [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 1 1 • sub [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 • [0 >] nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 [0 >] • nullary [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 [0 >] • [stack] dip infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 [0 >] [stack] • dip infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 • stack [0 >] infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 [0 1 2 3 4 5] • [0 >] infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 [0 1 2 3 4 5] [0 >] • infra first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 • 0 > [0 1 2 3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 0 • > [0 1 2 3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 0 • gt [0 1 2 3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 false • [0 1 2 3 4 5] swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 false [0 1 2 3 4 5] • swaack first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 [false 1 2 3 4 5] • first [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 false • [dup -- [0 >] nullary] loop [] swaack
5 4 3 2 1 0 false [dup -- [0 >] nullary] • loop [] swaack
Phase 5: Loop finished, complete original infra:
5 4 3 2 1 0 • [] swaack
5 4 3 2 1 0 [] • swaack
[0 1 2 3 4 5] •