From eb665f2b508335fa584d7a661c7d877e94345ded Mon Sep 17 00:00:00 2001 From: sforman Date: Sun, 8 Oct 2023 17:58:22 -0700 Subject: [PATCH] More work on Ref doc, & stuff. --- docs/Safety.txt | 23 ++++++++++++ docs/html/FuncRef.html | 8 ++-- docs/html/damnit.html | 16 ++++++++ docs/misc/grammar.png | Bin 0 -> 20341 bytes docs/misc/grammar_extended_integer.png | Bin 0 -> 37688 bytes docs/reference/to_html.py | 35 +++++++++++++----- .../notebooks/Unity_of_times_and_step.md | 29 +++++++++++++++ implementations/as_dl.py | 21 +++++++++++ 8 files changed, 119 insertions(+), 13 deletions(-) create mode 100644 docs/Safety.txt create mode 100644 docs/html/damnit.html create mode 100644 docs/misc/grammar.png create mode 100644 docs/misc/grammar_extended_integer.png create mode 100644 docs/source/notebooks/Unity_of_times_and_step.md create mode 100644 implementations/as_dl.py diff --git a/docs/Safety.txt b/docs/Safety.txt new file mode 100644 index 0000000..ce2dbb8 --- /dev/null +++ b/docs/Safety.txt @@ -0,0 +1,23 @@ + + size <- step_zero <- step <- uncons + +Somewhere in there it breaks, e.g. (Nim): + + [cats ...] + joy? size + Unknown: cats + + + +w/ + ++d == [++] dip + +We can define a "safe" version of `size` like so: + + size == 0 swap ? [++d rest ?] loop pop + +But I hate the idea of "safe" here. +Either it's user error for calling `size` on a quoted program, +or we should "safe"en the core words? + +safe version of uncons == [first] dupdip [rest] diff --git a/docs/html/FuncRef.html b/docs/html/FuncRef.html index ad347b4..f417ac8 100644 --- a/docs/html/FuncRef.html +++ b/docs/html/FuncRef.html @@ -206,7 +206,7 @@ expressions, e.g.: ------------------ [a ...]

Discussion

Cons is a venerable old function from Lisp. -Its inverse operation is [uncons].


dinfrirst

combinator

Specialist function (that means I forgot what it does and why.)

Definition


dip

combinator built-in

The dip combinator expects a quoted program on the stack and below it +Its inverse operation is [uncons].


dinfrirst

combinator

Specialist function (that means I forgot what it does and why.)

Definition


dip

combinator built-in

The dip combinator expects a quoted program on the stack and below it some item, it hoists the item into the expression and runs the program on the rest of the stack.

   ... x [Q] . dip
@@ -224,15 +224,15 @@ Continuation-Passing Style.  The dip combinator could "set aside" t
 item and replace it after running Q but that means that there is an
 "extra space" where the item resides while Q runs.  One of the nice
 things about CPS is that the whole state is recorded in the stack and
-pending expression (not counting modifications to the dictionary.)


dipd

combinator

Like [dip] but expects two items.

+pending expression (not counting modifications to the dictionary.)


dipd

combinator

Like [dip] but expects two items.

   ... y x [Q] . dipd
 -------------------------
            ... . Q y x
-

Definition

Discussion

See [dip].


dipdd

combinator

Like [dip] but expects three items. :

+

Definition

Discussion

See [dip].


dipdd

combinator

Like [dip] but expects three items. :

   ... z y x [Q] . dip
 -----------------------------
              ... . Q z y x
-

Discussion

See [dip].


disenstacken

The disenstacken function expects a list on top of the stack and makes +

Definition

Discussion

See [dip].


disenstacken

The disenstacken function expects a list on top of the stack and makes that the stack discarding the rest of the stack.

   1 2 3 [4 5 6] disenstacken
 --------------------------------
diff --git a/docs/html/damnit.html b/docs/html/damnit.html
new file mode 100644
index 0000000..23d57ce
--- /dev/null
+++ b/docs/html/damnit.html
@@ -0,0 +1,16 @@
+

This works by building a little [while] program and running it: + 1 3 [++] • [-- dip] cons [swap] infra [0 >] swap while pop
+ 1 3 [++] [-- dip] • cons [swap] infra [0 >] swap while pop
+ 1 3 [[++] -- dip] • [swap] infra [0 >] swap while pop
+ 1 3 [[++] -- dip] [swap] • infra [0 >] swap while pop + dip -- [++] • swap [3 1] swaack [0 >] swap while pop
+ dip [++] -- • [3 1] swaack [0 >] swap while pop
+ dip [++] -- [3 1] • swaack [0 >] swap while pop
+ 1 3 [-- [++] dip] • [0 >] swap while pop
+ 1 3 [-- [++] dip] [0 >] • swap while pop + 1 3 [0 >] [-- [++] dip] • while pop +This is a common pattern in Joy. You accept some parameters from the +stack which typically include qouted programs and use them to build +another program which does the actual work. This is kind of like macros +in Lisp, or preprocessor directives in C.

+ diff --git a/docs/misc/grammar.png b/docs/misc/grammar.png new file mode 100644 index 0000000000000000000000000000000000000000..f149f98a85317d01d17a249abb0cfeffc8ca1dea GIT binary patch literal 20341 zcmafbXFOcN|E^x6MUNW2ix5PQ5)oM?EYUYaw}h~IZ$S{fmql0vtM?kccdLtDR`308 ze!u&_FYb$bU!C)rIa7Ad%$eu=JkM;HhMF=F!7~ChG&CZWcZwfT*G4on^gcWs)ZHS{ zI|?*3W;7MWH`;E-`-}K>e7ZovBc0s0L`^WwKMIVT&lIuPKEIU5z{Rs!#p0pCZ!#oJ zAbr7t&&CBxLI?U_O^o)HdW-gbTVHwey@dZxNgxOhpGjC+w4#oMa4{kU{V z)k`h@jPQ$?g-ET0i4}v`ra^~cE2&4%s4vm|{it$?56c+`)Dya_>y^cK8+`otF+_&< zOl5Xq79*`n4hZ)Ji=22v4+)xIoE6Jw(ckDo?`|Fmyn)-Tp-aWiZ!V)o9y!nIMr{?! z2=6yWPet9wt{2w+6?}Z3yd?uQfIjLZ@19-VhHLnu-{Z<>F?pjkOqDb_=it|%L>_*B`{2GEnE&in{aBWI!x3siaZ?NR@M?b4rG8}k-kM~8 z!g5+)iTx>?2O&!{|Dd+54oKO*KYrYk9}#Hr^%#rr{dTu860y6$CDKe(F;$5zYT;i5 z%9^QsG^!uc58t=LW>mQ506*bx3y*we)MA zGfz5^lZWyVcIXn0?+oa%Nwr3flPVeKmS~O775_d`19K#+#8Iabc4D2$(65er!#9i3 zT;3*v06g3o!@jQiYm6lpnOdBskJbjK`rW*nVmO7&V(h`?)UXUf6Uuyv1y+Tio@uY| z#Ya-xTb6EHC<}x$X9d)5`>t+Pp|aFAN14AA{>>uS&eue0i%%XJ+2DM|dMlabw`Czq z$n`k&OnTqDLapZ2ARX=L5#{ad(id#F9um7G-L5Gv@=0Ierv-1dgMV(cjK@isx|gX_ z*6o7j$#_zWvr`{?(ubOw8jgZ=CpU?;&rpvCJ_bDy6=Iog>!!Q#G=->{&$+?UHR-^3 zPRH=xM4mm0;h=PyD{Xi7m!{i%-^pY|97#|M$7CAEIkHyb0%6vA@`vf+X#H$LJ*#OK zSe7bvJ3ErOa2(~Dp6<5#w}m~h*$h62ajUhO9-Sg_=-Trrn00d?w)TiiwJa_CAX9_p z(E~U*|GRrFc2jW*M$_G>) z$7IU%$3!IVy$T$)O&k22W$r_^#Ertw8A-Xv^dzd};zrkW-+EFw(bL_KLwTYryh^dr z9!BKPkJRx1!ej5Ln4T3;bK=}vsSZkfbFXl=^5+1Fsq!SqsVuny?dE-T7wqxUq=lZ< zYeAufc4Ojido-xhr8p9tpM~LP6gn&POw+~P&9aWtk>-CDdrh*a5 z%+tj`6?meXAO3?9DG}&Ew2|fupj6lZH&n`z!_%N=Hl^g$jJ$}hxmNx&b$Rve1JO-Z z-Eui2xa1~}jAz^_us+Jgu9BRyaIgDImN$cI{_5*gKZgXX52&oB_+hbP!V9Ib;z&1KccP(eMku$$(^OZkV8LPv8y&-d@|% z@*9V4l{7CNKXHL%`OnayjKuYSod(A)cEIN?kA`=G5BI~Pyz>5(X&qX!6P@)H@Rn~Nh*t{pQ-=gm*J(q<4im) z!Bvh1+-2bb%b$UW6Pw;ndhFI$9~Z4kip;lCr5Z+?M2|2M%w|S>;q>_csx|WP8@T=6 zVx`WY6T)6FBwK6l->_ofyd)UKv5P(L7eC)tUfjcMCtQLAMzOYv}K+iSC@L zE6k5>Gtw$Q
@?9Lr-)M8jTd#A7hVQ7-+=o-W%k9!_Nb)$nlEtO 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
' try: @@ -129,6 +129,12 @@ for name, section in sections.items(): del section[i:] +for name in sections: + sections[name] = '\n'.join(sections[name]) +for name in discussions: + discussions[name] = '\n'.join(discussions[name]) + + def add_definition(to, name): try: defi = definitions[name] @@ -142,11 +148,11 @@ def add_definition(to, name): b, e = match.span() if b != start: to += defi[start:b] - foo = match.group() - if foo.isnumeric() or foo == 'true' or foo == 'false': - to += foo + m = match.group() + if m.isnumeric() or m == 'true' or m == 'false': + to += m else: - to.a(foo, href='#' + get_anchor(foo)) + to.a(m, href='#' + get_anchor(m)) start = e end = defi[start:] if end: @@ -190,7 +196,7 @@ def add_discussion(to, name): return to = to.div(class_='discussion_wrapper') to.h3('Discussion') - foo(to, '\n'.join(discussion), class_='discussion') + marken_down(to, discussion, class_='discussion') def add_backlinks(to, name): @@ -244,7 +250,7 @@ with doc.body as b: if name in basis_functions: tags.span('built-in', class_='kind') - foo(d, '\n'.join(section)) + marken_down(d, section) add_definition(d, name) add_discussion(d, name) @@ -257,8 +263,17 @@ print(html_string, file=open('../html/FuncRef.html', 'w')) #from bs4 import BeautifulSoup #print(BeautifulSoup(html_string, 'html.parser').prettify()) -##import pprint -##pprint.pprint(crosslinks) +import pprint +#pprint.pprint(crosslinks) + +##def pprint_data(): +## print('sections = ', end='') +## pprint.pprint(sections) +## print() +## print('discussions = ', end='') +## pprint.pprint(discussions) + + ##if non: ## for n in sorted(non): @@ -271,3 +286,5 @@ E = S - D - basis_functions print('Def but no ref:', ' '.join(sorted(W))) print('Ref but no def:', ' '.join(sorted(E))) + +##pprint_data() diff --git a/docs/source/notebooks/Unity_of_times_and_step.md b/docs/source/notebooks/Unity_of_times_and_step.md new file mode 100644 index 0000000..6db76f4 --- /dev/null +++ b/docs/source/notebooks/Unity_of_times_and_step.md @@ -0,0 +1,29 @@ + +[... [...] [... x] branch] x + + +step [_step0] x +_step0 _step1 [popopop] [_stept] branch +_step1 [?] dipd roll< +_stept [uncons] dipd [dupdipd] dip x + + +times [_times0] x +_times0 _times1 [popopop] [_timest] branch +_times1 [dup 0 >] dipd roll< +_timest [--] dipd [dupdipd] dip x + + +[[A] dipd roll< [popopop] [[B] dipd [dupdipd] dip x] branch] x + + +H == dipd [dupdipd] dip +J == dipd roll< + +[[A] J [popopop] [[B] H x] branch] x + +[A] [B] +[?] [uncons] step +[dup 0 >] [--] times + + diff --git a/implementations/as_dl.py b/implementations/as_dl.py new file mode 100644 index 0000000..1e50cf9 --- /dev/null +++ b/implementations/as_dl.py @@ -0,0 +1,21 @@ +from html import escape +from re import sub + + +def j_replace(match): + name = escape(match.group(0)) + return f'{name}' + +def j_bod(body): + return sub('[^ [\]]+', j_replace, body.strip()) + +defs = list(open('defs.txt')) + +print('
') + +for d in defs: + name, body = d.split(None, 1) + name = escape(name) + print(f'
{name}
{j_bod(body)}

') + +print('
')