| ID | bd820daa-5808-4294-b6a7-e8c5f67f59d7 |
|---|---|
| DEERTOPIAVISIBILITY | public |
APL
unimplemented! (keyword)
{:type "keyword",
:affiliated {},
:key "PROPERTY",
:value "header-args :session *new*",
:position
{:start {:line 6, :column 1, :offset 109},
:end {:line 7, :column 1, :offset 148}}}
APL is an array programming language with a shitty proprietary implementation. This Babel file took like 6 miserable hours to get working }:3.
Unlike J, APL makes heavy use of non-ASCII glyphs.
×/⍳6 ⍝ equivalent to the expression !6
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "720\n",
:position
{:start {:line 19, :column 1, :offset 556},
:end {:line 20, :column 2, :offset 563}}}
Basics
Arithmetic
1+2
10-3
2×3
10÷5
unimplemented! (drawer)
{:type "drawer",
:affiliated {:results ""},
:name "RESULTS",
:contents-begin 664,
:contents-end 688,
:position
{:start {:line 34, :column 1, :offset 654},
:end {:line 43, :column 6, :offset 693}},
:children
([:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "fixed-width"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"fixed-width\",\n :affiliated {},\n :value \"3\\n\\n7\\n\\n6\\n\\n2\\n\",\n :position\n {:start {:line 35, :column 1, :offset 664},\n :end {:line 42, :column 2, :offset 687}}}\n"]])}
Assignment
← is called gets, and assigns a value to a variable.
x←2×3
x
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "6\n",
:position
{:start {:line 55, :column 1, :offset 822},
:end {:line 56, :column 2, :offset 827}}}
⊢ (same) trivially returns its argument, like the identity function. It can be useful in interactive sessions to print the value of expressions that otherwise wouldn't return anything, e.g. assignments.
⊢x←2×3
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "6\n",
:position
{:start {:line 65, :column 1, :offset 1090},
:end {:line 66, :column 2, :offset 1095}}}
Assigning to ⎕ (quad) will print the assigned expression.
⎕←2×3
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "6\n",
:position
{:start {:line 75, :column 1, :offset 1212},
:end {:line 76, :column 2, :offset 1217}}}
Like other languages, _ is conventially used as an asignee to discard a value.
(a _ b) ← 1 2 3 ⍝ Discard second value.
a b
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "1 3\n",
:position
{:start {:line 86, :column 1, :offset 1391},
:end {:line 87, :column 2, :offset 1398}}}
Indexing
APL has many ways to index arrays.
Index origin
Most languages origin their arrays at 0. Few origin at 1. APL lets you choose }:).
x←2 4 6 8
⎕IO←1 ⍝ Set the 'index origin' to 1.
x[1]
⎕IO←0 ⍝ Set the 'index origin' to 0.
x[1]
unimplemented! (drawer)
{:type "drawer",
:affiliated {:results ""},
:name "RESULTS",
:contents-begin 1701,
:contents-end 1713,
:position
{:start {:line 106, :column 1, :offset 1691},
:end {:line 111, :column 6, :offset 1718}},
:children
([:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "fixed-width"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"fixed-width\",\n :affiliated {},\n :value \"2\\n\\n4\\n\",\n :position\n {:start {:line 107, :column 1, :offset 1701},\n :end {:line 110, :column 2, :offset 1712}}}\n"]])}
C-style bracket syntax
This syntax is immediately recognisable to users of C descendents.
x←0 2 4 6
x[1]
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "2\n",
:position
{:start {:line 123, :column 1, :offset 1877},
:end {:line 124, :column 2, :offset 1882}}}
You can index an array by an array to request several indices:
⎕IO←0
x←0 2 4 6
x[0 2]
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "0 4\n",
:position
{:start {:line 135, :column 1, :offset 2017},
:end {:line 136, :column 2, :offset 2024}}}
Note that this syntax is considered unidiomatic, due to its stand-out syntax (neither a monad nor a dyad) and the fact that it does not work in tacit functions.
Functional indexing (squad)
No, that isn't a missing character — it just looks like that. The glyph ⌷ (pronounced squad, for "squashed quad") is seen by many as an improvement on the C-style bracket syntax. Unlike bracket indexing, squad is a normal dyadic function.
1⌷1 2 3 4
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "2\n",
:position
{:start {:line 149, :column 1, :offset 2523},
:end {:line 150, :column 2, :offset 2528}}}
Like the bracket syntax, one can request multiple indices. In dissimilarity, however, the indexing array must be wrapped:
(⊂1 3)⌷2 4 6 8 10
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "4 8\n",
:position
{:start {:line 159, :column 1, :offset 2717},
:end {:line 160, :column 2, :offset 2724}}}
Terminology
See J's terminology.
Dfns (anonymous functions)
Dfns are a Dyalog extension, not fully implemented in GNU APL. A dfn is written inside a pair of braces. Inside these braces, some additional identifiers are valid: ⍺ (left arg), ⍵ (right arg), ∇ (self-reference), ⋄ or newline (statement separator), and : (guard).
⍺ and ⍵
As previously mentioned, ⍺ and ⍵ refer to the dfn's left and right arguments. Without a left argument, a function is monadic.
square←{⍵×⍵}
square 4
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "16\n",
:position
{:start {:line 180, :column 1, :offset 3332},
:end {:line 181, :column 2, :offset 3338}}}
It shouldn't be a surprise that dyads are written infix, but it caught me. }:)
squareAndSum←{(⍵×⍵)+⍺×⍺}
2 squareAndSum 3
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "13\n",
:position
{:start {:line 191, :column 1, :offset 3508},
:end {:line 192, :column 2, :offset 3514}}}
Guarded expressions
A guarded expression is essentially just a conditional expression. APL's guards bear syntactic resemblance to C's ternary operator: the expression C:T⋄F evaluates to T when C is truthy, and F otherwise.
isThree←{⍵=3:'is three'⋄'is not three'}
isThree 3
isThree 300
unimplemented! (drawer)
{:type "drawer",
:affiliated {:results ""},
:name "RESULTS",
:contents-begin 3871,
:contents-end 3901,
:position
{:start {:line 205, :column 1, :offset 3861},
:end {:line 210, :column 6, :offset 3906}},
:children
([:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "fixed-width"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"fixed-width\",\n :affiliated {},\n :value \"is three\\n\\nis not three\\n\",\n :position\n {:start {:line 206, :column 1, :offset 3871},\n :end {:line 209, :column 2, :offset 3900}}}\n"]])}
Self-reference (recursion)
∇ stands as a reference to the enclosing dfn itself.
factorial←{⍵>0:⍵×∇⍵-1⋄1}
factorial 6
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "720\n",
:position
{:start {:line 222, :column 1, :offset 4079},
:end {:line 223, :column 2, :offset 4086}}}
Function/operator reference
The names listed are not those commonly-accepted. This is for my own personal recollection. }:3
unimplemented! (table)
{:type "table",
:table-type "org",
:tblfm "",
:contents-begin 4217,
:contents-end 5170,
:position
{:start {:line 229, :column 1, :offset 4217},
:end {:line 250, :column 1, :offset 5170}},
:children
([:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4218,\n :contents-end 4261,\n :position\n {:start {:line 229, :column 1, :offset 4217},\n :end {:line 229, :column 45, :offset 4261}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4219,\\n :contents-end 4221,\\n :position\\n {:start {:line 229, :column 2, :offset 4218},\\n :end {:line 229, :column 11, :offset 4227}},\\n :children (\\\"op\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4228,\\n :contents-end 4233,\\n :position\\n {:start {:line 229, :column 11, :offset 4227},\\n :end {:line 229, :column 28, :offset 4244}},\\n :children (\\\"monad\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4245,\\n :contents-end 4249,\\n :position\\n {:start {:line 229, :column 28, :offset 4244},\\n :end {:line 229, :column 45, :offset 4261}},\\n :children (\\\"dyad\\\")}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"rule\",\n :contents-begin 4263,\n :contents-end 4263,\n :position\n {:start {:line 230, :column 1, :offset 4262},\n :end {:line 230, :column 45, :offset 4306}},\n :children nil}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4308,\n :contents-end 4353,\n :position\n {:start {:line 231, :column 1, :offset 4307},\n :end {:line 231, :column 47, :offset 4353}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4309,\\n :contents-end 4312,\\n :position\\n {:start {:line 231, :column 2, :offset 4308},\\n :end {:line 231, :column 13, :offset 4319}},\\n :children ([:code \\\"/\\\"])}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4335,\\n :contents-end 4335,\\n :position\\n {:start {:line 231, :column 13, :offset 4319},\\n :end {:line 231, :column 30, :offset 4336}},\\n :children nil}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4337,\\n :contents-end 4351,\\n :position\\n {:start {:line 231, :column 30, :offset 4336},\\n :end {:line 231, :column 47, :offset 4353}},\\n :children (\\\"fold OR repeat\\\")}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4355,\n :contents-end 4400,\n :position\n {:start {:line 232, :column 1, :offset 4354},\n :end {:line 232, :column 47, :offset 4400}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4356,\\n :contents-end 4359,\\n :position\\n {:start {:line 232, :column 2, :offset 4355},\\n :end {:line 232, :column 13, :offset 4366}},\\n :children ([:code \\\"!\\\"])}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4367,\\n :contents-end 4376,\\n :position\\n {:start {:line 232, :column 13, :offset 4366},\\n :end {:line 232, :column 30, :offset 4383}},\\n :children (\\\"factorial\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4399,\\n :contents-end 4399,\\n :position\\n {:start {:line 232, :column 30, :offset 4383},\\n :end {:line 232, :column 47, :offset 4400}},\\n :children nil}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4402,\n :contents-end 4445,\n :position\n {:start {:line 233, :column 1, :offset 4401},\n :end {:line 233, :column 45, :offset 4445}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4403,\\n :contents-end 4404,\\n :position\\n {:start {:line 233, :column 2, :offset 4402},\\n :end {:line 233, :column 11, :offset 4411}},\\n :children (\\\"+\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4427,\\n :contents-end 4427,\\n :position\\n {:start {:line 233, :column 11, :offset 4411},\\n :end {:line 233, :column 28, :offset 4428}},\\n :children nil}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4429,\\n :contents-end 4432,\\n :position\\n {:start {:line 233, :column 28, :offset 4428},\\n :end {:line 233, :column 45, :offset 4445}},\\n :children (\\\"add\\\")}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4447,\n :contents-end 4490,\n :position\n {:start {:line 234, :column 1, :offset 4446},\n :end {:line 234, :column 45, :offset 4490}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4448,\\n :contents-end 4449,\\n :position\\n {:start {:line 234, :column 2, :offset 4447},\\n :end {:line 234, :column 11, :offset 4456}},\\n :children (\\\"-\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4457,\\n :contents-end 4463,\\n :position\\n {:start {:line 234, :column 11, :offset 4456},\\n :end {:line 234, :column 28, :offset 4473}},\\n :children (\\\"negate\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4474,\\n :contents-end 4482,\\n :position\\n {:start {:line 234, :column 28, :offset 4473},\\n :end {:line 234, :column 45, :offset 4490}},\\n :children (\\\"subtract\\\")}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4492,\n :contents-end 4535,\n :position\n {:start {:line 235, :column 1, :offset 4491},\n :end {:line 235, :column 45, :offset 4535}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4493,\\n :contents-end 4494,\\n :position\\n {:start {:line 235, :column 2, :offset 4492},\\n :end {:line 235, :column 11, :offset 4501}},\\n :children (\\\"×\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4502,\\n :contents-end 4508,\\n :position\\n {:start {:line 235, :column 11, :offset 4501},\\n :end {:line 235, :column 28, :offset 4518}},\\n :children (\\\"signum\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4519,\\n :contents-end 4527,\\n :position\\n {:start {:line 235, :column 28, :offset 4518},\\n :end {:line 235, :column 45, :offset 4535}},\\n :children (\\\"multiply\\\")}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4537,\n :contents-end 4580,\n :position\n {:start {:line 236, :column 1, :offset 4536},\n :end {:line 236, :column 45, :offset 4580}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4538,\\n :contents-end 4539,\\n :position\\n {:start {:line 236, :column 2, :offset 4537},\\n :end {:line 236, :column 11, :offset 4546}},\\n :children (\\\"⍸\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4547,\\n :contents-end 4561,\\n :position\\n {:start {:line 236, :column 11, :offset 4546},\\n :end {:line 236, :column 28, :offset 4563}},\\n :children (\\\"truthy indices\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4579,\\n :contents-end 4579,\\n :position\\n {:start {:line 236, :column 28, :offset 4563},\\n :end {:line 236, :column 45, :offset 4580}},\\n :children nil}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4582,\n :contents-end 4625,\n :position\n {:start {:line 237, :column 1, :offset 4581},\n :end {:line 237, :column 45, :offset 4625}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4583,\\n :contents-end 4584,\\n :position\\n {:start {:line 237, :column 2, :offset 4582},\\n :end {:line 237, :column 11, :offset 4591}},\\n :children (\\\"÷\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4592,\\n :contents-end 4602,\\n :position\\n {:start {:line 237, :column 11, :offset 4591},\\n :end {:line 237, :column 28, :offset 4608}},\\n :children (\\\"reciprocal\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4609,\\n :contents-end 4615,\\n :position\\n {:start {:line 237, :column 28, :offset 4608},\\n :end {:line 237, :column 45, :offset 4625}},\\n :children (\\\"divide\\\")}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4627,\n :contents-end 4670,\n :position\n {:start {:line 238, :column 1, :offset 4626},\n :end {:line 238, :column 45, :offset 4670}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4628,\\n :contents-end 4629,\\n :position\\n {:start {:line 238, :column 2, :offset 4627},\\n :end {:line 238, :column 11, :offset 4636}},\\n :children (\\\"⍳\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4637,\\n :contents-end 4643,\\n :position\\n {:start {:line 238, :column 11, :offset 4636},\\n :end {:line 238, :column 28, :offset 4653}},\\n :children (\\\"[1..n]\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4654,\\n :contents-end 4664,\\n :position\\n {:start {:line 238, :column 28, :offset 4653},\\n :end {:line 238, :column 45, :offset 4670}},\\n :children (\\\"find index\\\")}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4672,\n :contents-end 4715,\n :position\n {:start {:line 239, :column 1, :offset 4671},\n :end {:line 239, :column 45, :offset 4715}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4673,\\n :contents-end 4674,\\n :position\\n {:start {:line 239, :column 2, :offset 4672},\\n :end {:line 239, :column 11, :offset 4681}},\\n :children (\\\"⊃\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4682,\\n :contents-end 4686,\\n :position\\n {:start {:line 239, :column 11, :offset 4681},\\n :end {:line 239, :column 28, :offset 4698}},\\n :children (\\\"head\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4714,\\n :contents-end 4714,\\n :position\\n {:start {:line 239, :column 28, :offset 4698},\\n :end {:line 239, :column 45, :offset 4715}},\\n :children nil}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4717,\n :contents-end 4760,\n :position\n {:start {:line 240, :column 1, :offset 4716},\n :end {:line 240, :column 45, :offset 4760}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4718,\\n :contents-end 4719,\\n :position\\n {:start {:line 240, :column 2, :offset 4717},\\n :end {:line 240, :column 11, :offset 4726}},\\n :children (\\\"⊂\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4727,\\n :contents-end 4739,\\n :position\\n {:start {:line 240, :column 11, :offset 4726},\\n :end {:line 240, :column 28, :offset 4743}},\\n :children (\\\"wrap/enclose\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4759,\\n :contents-end 4759,\\n :position\\n {:start {:line 240, :column 28, :offset 4743},\\n :end {:line 240, :column 45, :offset 4760}},\\n :children nil}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4762,\n :contents-end 4807,\n :position\n {:start {:line 241, :column 1, :offset 4761},\n :end {:line 241, :column 47, :offset 4807}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4763,\\n :contents-end 4765,\\n :position\\n {:start {:line 241, :column 2, :offset 4762},\\n :end {:line 241, :column 11, :offset 4771}},\\n :children (\\\"∘.\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4787,\\n :contents-end 4787,\\n :position\\n {:start {:line 241, :column 11, :offset 4771},\\n :end {:line 241, :column 28, :offset 4788}},\\n :children nil}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4789,\\n :contents-end 4802,\\n :position\\n {:start {:line 241, :column 28, :offset 4788},\\n :end {:line 241, :column 47, :offset 4807}},\\n :children ([:code \\\"(<*>) @List\\\"])}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4809,\n :contents-end 4852,\n :position\n {:start {:line 242, :column 1, :offset 4808},\n :end {:line 242, :column 45, :offset 4852}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4810,\\n :contents-end 4816,\\n :position\\n {:start {:line 242, :column 2, :offset 4809},\\n :end {:line 242, :column 11, :offset 4818}},\\n :children (\\\"«pipe»\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4834,\\n :contents-end 4834,\\n :position\\n {:start {:line 242, :column 11, :offset 4818},\\n :end {:line 242, :column 28, :offset 4835}},\\n :children nil}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4836,\\n :contents-end 4847,\\n :position\\n {:start {:line 242, :column 28, :offset 4835},\\n :end {:line 242, :column 45, :offset 4852}},\\n :children (\\\"residue/mod\\\")}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4854,\n :contents-end 4897,\n :position\n {:start {:line 243, :column 1, :offset 4853},\n :end {:line 243, :column 45, :offset 4897}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4855,\\n :contents-end 4856,\\n :position\\n {:start {:line 243, :column 2, :offset 4854},\\n :end {:line 243, :column 11, :offset 4863}},\\n :children (\\\"⌊\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4864,\\n :contents-end 4869,\\n :position\\n {:start {:line 243, :column 11, :offset 4863},\\n :end {:line 243, :column 28, :offset 4880}},\\n :children (\\\"floor\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4881,\\n :contents-end 4884,\\n :position\\n {:start {:line 243, :column 28, :offset 4880},\\n :end {:line 243, :column 45, :offset 4897}},\\n :children (\\\"min\\\")}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4899,\n :contents-end 4942,\n :position\n {:start {:line 244, :column 1, :offset 4898},\n :end {:line 244, :column 45, :offset 4942}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4900,\\n :contents-end 4901,\\n :position\\n {:start {:line 244, :column 2, :offset 4899},\\n :end {:line 244, :column 11, :offset 4908}},\\n :children (\\\"⌈\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4909,\\n :contents-end 4913,\\n :position\\n {:start {:line 244, :column 11, :offset 4908},\\n :end {:line 244, :column 28, :offset 4925}},\\n :children (\\\"ceil\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4926,\\n :contents-end 4929,\\n :position\\n {:start {:line 244, :column 28, :offset 4925},\\n :end {:line 244, :column 45, :offset 4942}},\\n :children (\\\"max\\\")}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4944,\n :contents-end 4987,\n :position\n {:start {:line 245, :column 1, :offset 4943},\n :end {:line 245, :column 45, :offset 4987}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4945,\\n :contents-end 4946,\\n :position\\n {:start {:line 245, :column 2, :offset 4944},\\n :end {:line 245, :column 11, :offset 4953}},\\n :children (\\\"~\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4954,\\n :contents-end 4957,\\n :position\\n {:start {:line 245, :column 11, :offset 4953},\\n :end {:line 245, :column 28, :offset 4970}},\\n :children (\\\"not\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4986,\\n :contents-end 4986,\\n :position\\n {:start {:line 245, :column 28, :offset 4970},\\n :end {:line 245, :column 45, :offset 4987}},\\n :children nil}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 4989,\n :contents-end 5032,\n :position\n {:start {:line 246, :column 1, :offset 4988},\n :end {:line 246, :column 45, :offset 5032}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 4990,\\n :contents-end 4991,\\n :position\\n {:start {:line 246, :column 2, :offset 4989},\\n :end {:line 246, :column 11, :offset 4998}},\\n :children (\\\"⌷\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 5014,\\n :contents-end 5014,\\n :position\\n {:start {:line 246, :column 11, :offset 4998},\\n :end {:line 246, :column 28, :offset 5015}},\\n :children nil}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 5016,\\n :contents-end 5021,\\n :position\\n {:start {:line 246, :column 28, :offset 5015},\\n :end {:line 246, :column 45, :offset 5032}},\\n :children (\\\"index\\\")}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 5034,\n :contents-end 5077,\n :position\n {:start {:line 247, :column 1, :offset 5033},\n :end {:line 247, :column 45, :offset 5077}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 5035,\\n :contents-end 5036,\\n :position\\n {:start {:line 247, :column 2, :offset 5034},\\n :end {:line 247, :column 11, :offset 5043}},\\n :children (\\\"↑\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 5059,\\n :contents-end 5059,\\n :position\\n {:start {:line 247, :column 11, :offset 5043},\\n :end {:line 247, :column 28, :offset 5060}},\\n :children nil}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 5061,\\n :contents-end 5065,\\n :position\\n {:start {:line 247, :column 28, :offset 5060},\\n :end {:line 247, :column 45, :offset 5077}},\\n :children (\\\"take\\\")}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 5079,\n :contents-end 5122,\n :position\n {:start {:line 248, :column 1, :offset 5078},\n :end {:line 248, :column 45, :offset 5122}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 5080,\\n :contents-end 5081,\\n :position\\n {:start {:line 248, :column 2, :offset 5079},\\n :end {:line 248, :column 11, :offset 5088}},\\n :children (\\\"¨\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 5104,\\n :contents-end 5104,\\n :position\\n {:start {:line 248, :column 11, :offset 5088},\\n :end {:line 248, :column 28, :offset 5105}},\\n :children nil}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 5121,\\n :contents-end 5121,\\n :position\\n {:start {:line 248, :column 28, :offset 5105},\\n :end {:line 248, :column 45, :offset 5122}},\\n :children nil}\\n\"]])}\n"]]
[:details
[:summary
{:style {:font-family "IBM Plex Sans"}}
("unimplemented!" " (" [:code "table-row"] ")")]
[:samp
{:style {:overflow "scroll", :display "block", :white-space "pre"}}
"{:type \"table-row\",\n :row-type \"standard\",\n :contents-begin 5124,\n :contents-end 5169,\n :position\n {:start {:line 249, :column 1, :offset 5123},\n :end {:line 249, :column 47, :offset 5169}},\n :children\n ([:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 5125,\\n :contents-end 5126,\\n :position\\n {:start {:line 249, :column 2, :offset 5124},\\n :end {:line 249, :column 11, :offset 5133}},\\n :children (\\\"⍨\\\")}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 5149,\\n :contents-end 5149,\\n :position\\n {:start {:line 249, :column 11, :offset 5133},\\n :end {:line 249, :column 28, :offset 5150}},\\n :children nil}\\n\"]]\n [:details\n [:summary\n {:style {:font-family \"IBM Plex Sans\"}}\n (\"unimplemented!\" \" (\" [:code \"table-cell\"] \")\")]\n [:samp\n {:style {:overflow \"scroll\", :display \"block\", :white-space \"pre\"}}\n \"{:type \\\"table-cell\\\",\\n :contents-begin 5151,\\n :contents-end 5166,\\n :position\\n {:start {:line 249, :column 28, :offset 5150},\\n :end {:line 249, :column 47, :offset 5169}},\\n :children ([:code \\\"join @((->)w)\\\"])}\\n\"]])}\n"]])}
Folds
⌿ folds over columns, while / folds over rows.
Filters
/, when the left argument is a boolean array, uses it similarly to a bitmask:
1 1 0 1 0/1 2 3 4 5
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "1 2 4\n",
:position
{:start {:line 264, :column 1, :offset 5392},
:end {:line 265, :column 2, :offset 5401}}}
Iteration / corecursion
The power operator
The power operator repeatedly applies a given step function.
Examples
Nth Fibonacci number
This snippet uses corecursion on the array 0 1 to find the nth Fibonacci number. Each step builds another two-element array with the previous value and the sum:
0 1 → 1 1 → 1 2 → 2 3 → ...
⎕IO←0
fib←{⊃⊃¯1↑{(1⌷⍵)(+/⍵)}\(⌈⍵+1)/⊂0 1}
fib¨⍳10 ⍝ First ten Fibonacci numbers.
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "0 1 1 2 3 5 8 13 21 34\n",
:position
{:start {:line 288, :column 1, :offset 5882},
:end {:line 289, :column 2, :offset 5908}}}
This version is a bit more intuitive, I think. Starting with 0 1, each step sums the previous array's last two elements and appends the sum to the array. That step function is run n times using the power operator. The penultimate element of the final array is returned.
fib←{⊃¯2↑({⍵,+/¯2↑⍵}⍣⍵)0 1}
fib 5
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "5\n",
:position
{:start {:line 299, :column 1, :offset 6263},
:end {:line 300, :column 2, :offset 6268}}}
Prime factorisation
Not a terribly smart algorith, but it works.
f←{⍺←2⋄(⍺×⍺)>⊃⍵:⍵⋄0=⍺|⊃⍵:⍺∇((⊃⍵)÷⍺),⍺,1↓⍵⋄({2=⍵:3⋄⍵+2}⍺)∇⍵}
f 720
unimplemented! (fixed-width)
{:type "fixed-width",
:affiliated {:results ""},
:value "5 3 3 2 2 2 2\n",
:position
{:start {:line 312, :column 1, :offset 6452},
:end {:line 313, :column 2, :offset 6469}}}
References
[cite:@minster2022getting]