Great progress!
This commit is contained in:
parent
eb665f2b50
commit
04d3e96a99
File diff suppressed because one or more lines are too long
|
|
@ -6,6 +6,30 @@ Version -10.0.0
|
|||
Each function, combinator, or definition should be documented here.
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## /\
|
||||
|
||||
Binary Boolean *and*.
|
||||
|
||||
### Crosslinks
|
||||
|
||||
[bool]
|
||||
[not]
|
||||
[\/]
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## \/
|
||||
|
||||
Binary Boolean *or*.
|
||||
|
||||
### Crosslinks
|
||||
|
||||
[bool]
|
||||
[not]
|
||||
[/\]
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## abs
|
||||
|
|
@ -390,13 +414,6 @@ the other way around.
|
|||
[select]
|
||||
|
||||
|
||||
--------------
|
||||
|
||||
## ^
|
||||
|
||||
See [xor](#xor).
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## clear
|
||||
|
|
@ -648,13 +665,38 @@ Specialist function (that means I forgot what it does and why.)
|
|||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## dipddd
|
||||
|
||||
Combinator
|
||||
|
||||
Like [dip] but expects four items. :
|
||||
|
||||
... z y x w [Q] . dipddd
|
||||
-------------------------------
|
||||
... . Q z y x w
|
||||
|
||||
### Discussion
|
||||
|
||||
See [dip].
|
||||
|
||||
### Crosslinks
|
||||
|
||||
[dip]
|
||||
[dipd]
|
||||
[dipdd]
|
||||
[dupdip]
|
||||
[dupdipd]
|
||||
[infra]
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## dipdd
|
||||
|
||||
Combinator
|
||||
|
||||
Like [dip] but expects three items. :
|
||||
|
||||
... z y x [Q] . dip
|
||||
... z y x [Q] . dipdd
|
||||
-----------------------------
|
||||
... . Q z y x
|
||||
### Discussion
|
||||
|
|
@ -665,11 +707,11 @@ See [dip].
|
|||
|
||||
[dip]
|
||||
[dipd]
|
||||
[dipddd]
|
||||
[dupdip]
|
||||
[dupdipd]
|
||||
[infra]
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## dipd
|
||||
|
|
@ -690,6 +732,7 @@ See [dip].
|
|||
|
||||
[dip]
|
||||
[dipdd]
|
||||
[dipddd]
|
||||
[dupdip]
|
||||
[dupdipd]
|
||||
[infra]
|
||||
|
|
@ -755,13 +798,13 @@ printed with the top or head on the left.
|
|||
|
||||
[enstacken]
|
||||
[stack]
|
||||
[unstack]
|
||||
|
||||
|
||||
--------------
|
||||
--------------------------------------------
|
||||
|
||||
## div
|
||||
|
||||
See [floordiv](#floordiv).
|
||||
Divide.
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
|
@ -933,6 +976,7 @@ This is a destructive version of [stack]. See the note under
|
|||
|
||||
[stack]
|
||||
[disenstacken]
|
||||
[unstack]
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
|
@ -954,7 +998,7 @@ them with a Boolean value.
|
|||
[gt]
|
||||
[le]
|
||||
[lt]
|
||||
[ne]
|
||||
[neq]
|
||||
|
||||
|
||||
--------------
|
||||
|
|
@ -968,7 +1012,7 @@ See [eq](#eq).
|
|||
|
||||
## !=
|
||||
|
||||
See [ne](#ne).
|
||||
See [neq](#neq).
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
|
@ -1071,39 +1115,6 @@ Note that only one "level" of lists is flattened. In the example above
|
|||
[zip]
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## floordiv
|
||||
|
||||
I don't know why this is called "floor" div, I think it rounds its
|
||||
result down (not towards zero or up.)
|
||||
|
||||
a b floordiv
|
||||
------------------
|
||||
(a/b)
|
||||
|
||||
### Discussion
|
||||
|
||||
All the division commands need to be revisited when the "numeric tower"
|
||||
for Thun gets nailed down.
|
||||
|
||||
### Crosslinks
|
||||
|
||||
[divmod]
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## floor
|
||||
|
||||
Return the largest integer \<= x.
|
||||
|
||||
### Discussion
|
||||
|
||||
This function doesn't make sense (yet) to have because there are (as yet)
|
||||
only integers in the system.
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## fork
|
||||
|
|
@ -1145,21 +1156,6 @@ Replace a list with its fourth item.
|
|||
[rest]
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## gcd2
|
||||
|
||||
Compiled GCD function.
|
||||
|
||||
### Discussion
|
||||
|
||||
See [gcd].
|
||||
|
||||
### Crosslinks
|
||||
|
||||
[gcd]
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## gcd
|
||||
|
|
@ -1190,7 +1186,7 @@ Greater-than-or-equal-to comparison of two numbers.
|
|||
[gt]
|
||||
[le]
|
||||
[lt]
|
||||
[ne]
|
||||
[neq]
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
|
@ -1374,7 +1370,7 @@ Greater-than comparison of two numbers.
|
|||
[ge]
|
||||
[le]
|
||||
[lt]
|
||||
[ne]
|
||||
[neq]
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
|
@ -1406,23 +1402,6 @@ See [pred](#pred).
|
|||
See [sub](#sub).
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## hypot
|
||||
|
||||
x y hypot
|
||||
---------------------------
|
||||
sqrt(sqr(x) + sqr(y))
|
||||
|
||||
### Discussion
|
||||
|
||||
This is another function that has to wait on the numeric tower.
|
||||
|
||||
### Crosslinks
|
||||
|
||||
[sqrt]
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## id
|
||||
|
|
@ -1595,7 +1574,7 @@ stack, replacing them with a Boolean value.
|
|||
[ge]
|
||||
[gt]
|
||||
[lt]
|
||||
[ne]
|
||||
[neq]
|
||||
|
||||
--------------
|
||||
|
||||
|
|
@ -1608,7 +1587,7 @@ See [le](#le).
|
|||
|
||||
## <>
|
||||
|
||||
See [ne](#ne).
|
||||
See [neq](#neq).
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
|
@ -1733,7 +1712,7 @@ stack, replacing them with a Boolean value.
|
|||
[ge]
|
||||
[gt]
|
||||
[le]
|
||||
[ne]
|
||||
[neq]
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
|
@ -1886,12 +1865,12 @@ Invert the sign of a number.
|
|||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## ne
|
||||
## neq
|
||||
|
||||
Not-Equal comparison of the two items on the top of the
|
||||
stack, replacing them with a Boolean value.
|
||||
|
||||
a b ne
|
||||
a b neq
|
||||
-------------
|
||||
Boolean
|
||||
(a = b)
|
||||
|
|
@ -1909,8 +1888,7 @@ stack, replacing them with a Boolean value.
|
|||
|
||||
## not
|
||||
|
||||
Like [bool] but convert the item on the top of the stack to the inverse
|
||||
Boolean value.
|
||||
Invert the Boolean value on the top of the stack.
|
||||
|
||||
true not
|
||||
--------------
|
||||
|
|
@ -1924,7 +1902,6 @@ Boolean value.
|
|||
|
||||
[bool]
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## nulco
|
||||
|
|
@ -1945,6 +1922,14 @@ Helper function for [or] and [and].
|
|||
[or]
|
||||
|
||||
|
||||
--------------------
|
||||
|
||||
## null
|
||||
|
||||
True if the item on the top of the stack is an empty list,
|
||||
false if it's a list but not empty,
|
||||
and an error if it's not a list.
|
||||
|
||||
--------------------
|
||||
|
||||
## nullary
|
||||
|
|
@ -2006,7 +1991,6 @@ Logical bit-wise OR.
|
|||
### Crosslinks
|
||||
|
||||
[and]
|
||||
[xor]
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
|
@ -2532,18 +2516,6 @@ See [rolldown](#rolldown).
|
|||
[rolldown]
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## round
|
||||
|
||||
Round a number to a given precision in decimal digits.
|
||||
|
||||
### Discussion
|
||||
|
||||
Another one that won't make sense until the "numeric tower" is nailed
|
||||
down.
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## rrest
|
||||
|
|
@ -2691,26 +2663,24 @@ Replace a list with its size.
|
|||
3
|
||||
|
||||
|
||||
--------------
|
||||
|
||||
## /floor
|
||||
|
||||
See [floordiv](#floordiv).
|
||||
|
||||
|
||||
--------------
|
||||
|
||||
## /
|
||||
|
||||
See [floordiv](#floordiv).
|
||||
See [div](#div).
|
||||
|
||||
|
||||
--------------
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## //
|
||||
## small
|
||||
|
||||
See [floordiv](#floordiv).
|
||||
Return `true` if the item on the top of the stack is a list with zero or one item in it,
|
||||
`false` if it is a list with more than one item in it,
|
||||
and an error if it is not a list.
|
||||
|
||||
### Crosslinks
|
||||
|
||||
[null]
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
|
@ -2792,20 +2762,6 @@ Square the number on the top of the stack.
|
|||
------------
|
||||
n²
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## sqrt
|
||||
|
||||
Function Combinator
|
||||
|
||||
Return the square root of the number a. Negative numbers return complex
|
||||
roots.
|
||||
|
||||
### Discussion
|
||||
|
||||
Another "numeric tower" hatch...
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## stackd
|
||||
|
|
@ -2818,6 +2774,9 @@ Grab the stack under the top item and put it onto the stack.
|
|||
------------------------
|
||||
... 1 2 [2 1 ...] 3
|
||||
|
||||
### Crosslinks
|
||||
|
||||
[stack]
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
|
@ -2838,6 +2797,8 @@ complement to the "destructive" pair [enstacken] and [disenstacken].
|
|||
|
||||
[enstacken]
|
||||
[disenstacken]
|
||||
[stackd]
|
||||
[unstack]
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
|
@ -3160,13 +3121,6 @@ another program which does the actual work. This is kind of like macros
|
|||
in Lisp, or preprocessor directives in C.
|
||||
|
||||
|
||||
--------------
|
||||
|
||||
## truthy
|
||||
|
||||
See [bool](#bool).
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## tuck
|
||||
|
|
@ -3245,6 +3199,26 @@ Given a list remove duplicate items.
|
|||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## unstack
|
||||
|
||||
Take a list from the top of the stack and `concat` it to the stack.
|
||||
|
||||
joy? 1 2 3 [4 5 6]
|
||||
|
||||
1 2 3 [4 5 6]
|
||||
|
||||
joy? unstack
|
||||
|
||||
1 2 3 6 5 4
|
||||
|
||||
### Crosslinks
|
||||
|
||||
[stack]
|
||||
[disenstacken]
|
||||
[enstacken]
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## unquoted
|
||||
|
||||
Combinator
|
||||
|
|
@ -3377,20 +3351,6 @@ See the [Recursion Combinators notebook](https://joypy.osdn.io/notebooks/Recursi
|
|||
as well as
|
||||
[Recursion Theory and Joy](https://www.kevinalbrecht.com/code/joy-mirror/j05cmp.html) by Manfred von
|
||||
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## xor
|
||||
|
||||
Logical bit-wise eXclusive OR.
|
||||
|
||||
### Crosslinks
|
||||
|
||||
[and]
|
||||
[or]
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## zip
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ dup swap pop clear
|
|||
add sub mul div rem remainder
|
||||
+ - * / %
|
||||
concat
|
||||
truthy
|
||||
truthy bool
|
||||
inscribe
|
||||
< > >= <= != <> =
|
||||
gt lt ge le neq eq
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ dupdipd dup dipd
|
|||
dupdip dupd dip
|
||||
enstacken stack [clear] dip
|
||||
first uncons pop
|
||||
first_two uncons first
|
||||
flatten <{} [concat] step
|
||||
fork [i] app2
|
||||
fourth rest third
|
||||
|
|
@ -50,7 +51,6 @@ gcd true [tuck mod dup 0 >] loop pop
|
|||
genrec [[genrec] ccccons] nullary swons concat ifte
|
||||
grabN <{} [cons] times
|
||||
grba [stack popd] dip
|
||||
hypot [sqr] ii + sqrt
|
||||
ifte [nullary] dipd swap branch
|
||||
ii [dip] dupdip i
|
||||
infra swons swaack [i] dip swaack
|
||||
|
|
@ -63,7 +63,7 @@ neg 0 swap -
|
|||
not [true] [false] branch
|
||||
nulco [nullary] cons
|
||||
nullary [stack] dinfrirst
|
||||
null [] swap concat bool not
|
||||
null _isnt_list bool not
|
||||
of swap at
|
||||
or nulco [nullary] dip [true] branch
|
||||
over [dup] dip swap
|
||||
|
|
@ -134,9 +134,9 @@ _mape popd reverse
|
|||
_map0 [_map1] dipd _map2
|
||||
_map1 stackd shift
|
||||
_map2 [infrst] cons dipd roll< swons
|
||||
_isnt_bool not not
|
||||
_isnt_bool [false] [true] branch
|
||||
_isnt_two_bools [_isnt_bool] ii
|
||||
_\/_ [_isnt_bool] [not] branch
|
||||
/\ _isnt_two_bools [pop false] [] branch
|
||||
\/ _isnt_two_bools [] [pop true] branch
|
||||
xor [] [not] branch
|
||||
_isnt_list [] swoncat
|
||||
|
|
|
|||
Loading…
Reference in New Issue