blob: 3ec2800f13753778a3fa6859c0a25835931f177e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
A few tables to help users of Dyalog APL (or similar) get started quickly on BQN.
## For reading
Here are some closest equivalents in Dyalog APL for the BQN functions that don't use the same glyphs as APL. Correspondence can be approximate, and `⌽` is just used as a decorator to mean "reverse some things".
| BQN | `⋆` | `√` | `∧` | `∨` | `¬` | `≠` | `<` | `>` | `≢` | `⥊` | `∾` | `≍` |
|-------|-----|--------|-------|-------|-------|-----|-----|-----|-----|-----|-------|--------|
| Monad | `*` | `*∘÷⍨` | `[⍋]` | `[⍒]` | `~` | `≢` | `⊂` | `↑` | `⍴` | `,` | `⊃,⌿` | `↑,⍥⊂` |
| Dyad | | | `∧` | `∨` | `1+-` | `≠` | `<` | `>` | `≢` | `⍴` | `⍪` | |
| BQN | `↑` | `↓` | `↕` | `/` | `\` | `⍋` | `⍒` | `⊏` | `⊑` | `⊐` | `⊒` | `∊` | `⍷` | `⊔` |
|-------|------|---------|------|-----|-----|-----|-------|------|-----|-----|-----|-----|-----|-----|
| Monad | `,⍀` | `⌽,⌽⍀⌽` | `⍳` | `⍸` | | `⍋` | `⍒` | `⊣⌿` | `⊃` | | `…` | `≠` | | `⌸` |
| Dyad | `↑` | `↓` | `,⌿` | `⌿` | `⊆` | `⍸` | `⌽⍸⌽` | `⌷` | | `⍳` | `…` | `∊` | `⍷` | |
Modifiers and combinators are a little harder. Many have equivalents in some cases, but Dyalog sometimes chooses different functionality based on whether the operand is an array. In BQN an array is always treated as a constant function.
| BQN | `¨` | `⌜` | `´` | `⎉` | `⍟` | `˜` | `∘` | `○` | `⟜` |
|--------|-----|------|-----|-----|-----|-----|-----|-----|-----|
| Dyalog | `¨` | `∘.` | `⌿` | `⍤` | `⍣` | `⍨` | `⍤` | `⍥` | `∘` |
In BQN `⎉` is Rank and `∘` is Atop. Dyalog's Atop (`⍤`) and Over (`⍥`) were added in version 18.0.
## For writing
The tables below give approximate implementations of Dyalog primitives for the ones that aren't the same. First- and last-axis pairs are also mostly omitted. BQN just has the first-axis form, and you can get the last-axis form with `⎉1`.
<table>
<tr><th colspan=3>Functions</th></tr>
<tr><th> Glyph </th><th> Monadic </th><th> Dyadic </th> </tr>
<tr><td> <code>*</code> </td><td colspan=2><code>⋆</code></td> </tr>
<tr><td> <code>⍟</code> </td><td colspan=2><code>⋆⁼</code></td> </tr>
<tr><td> <code>!</code> </td><td colspan=2>Implement it yourself</td> </tr>
<tr><td> <code>○</code> </td><td colspan=2>Some complex exponential stuff, maybe</td> </tr>
<tr><td> <code>~</code> </td><td> <code>¬</code> </td><td> <code>¬∘∊/⊣</code></td> </tr>
<tr><td> <code>?</code> </td><td colspan=2>Library?</td> </tr>
<tr><td> <code>⍲</code> </td><td> </td> <td> <code>¬∘∧</code></td> </tr>
<tr><td> <code>⍱</code> </td><td> </td> <td> <code>¬∘∨</code></td> </tr>
<tr><td> <code>⍴</code> </td><td> <code>≢</code> </td><td> <code>⥊</code></td> </tr>
<tr><td> <code>,</code> </td><td> <code>⥊</code> </td><td> <code>∾⎉1</code></td> </tr>
<tr><td> <code>⍪</code> </td><td> <code>∾˘</code> </td><td> <code>∾</code></td> </tr>
<tr><td> <code>↑</code> </td><td> <code>></code> </td><td> <code>↑</code></td> </tr>
<tr><td> <code>↓</code> </td><td> <code><˘<code> </td> <td> <code>↑</code></td> </tr>
<tr><td> <code>⊂</code> </td><td> <code><<code> </td> <td> <code>\</code></td> </tr>
<tr><td> <code>⊆</code> </td><td> <code><⍟(0<≡)<code> </td> <td> <code>\</code></td> </tr>
<tr><td> <code>∊</code> </td><td> <code>{0=≡𝕩:⥊𝕩⋄∾⥊∇¨𝕩}</code> </td><td> <code>∊</code></td> </tr>
<tr><td> <code>⊃</code> </td><td colspan=2><code>⊑</code></td> </tr>
<tr><td> <code>⍀</code> </td><td> </td> <td> <code>/⁼</code></td> </tr>
<tr><td> <code>∩</code> </td><td> </td> <td> <code>∊/⊣</code></td> </tr>
<tr><td> <code>∪</code> </td><td> <code>∊⊸/</code> </td><td> <code>⊣∾∊˜¬⊸/⊢</code></td> </tr>
<tr><td> <code>⍳</code> </td><td> <code>↕</code> </td><td> <code>⊐</code></td> </tr>
<tr><td> <code>⍸</code> </td><td> <code>/</code> </td><td> <code>⍋</code></td> </tr>
<tr><td> <code>⍋</code> </td><td> <code>⍋</code> </td><td> Give up</td> </tr>
<tr><td> <code>⍒</code> </td><td> <code>⍒</code> </td><td> Give up</td> </tr>
<tr><td> <code>≢</code> </td><td> <code>≠</code> </td><td> <code>≢</code></td> </tr>
<tr><td> <code>⍎</code> </td><td colspan=2 rowspan=2>To be decided</td> </tr>
<tr><td> <code>⍕</code> </td> </tr>
<tr><td> <code>⊥</code> </td><td> </td> <td rowspan=2>To be decided</td></tr>
<tr><td> <code>⊤</code> </td><td> </td> </tr>
<tr><td> <code>⌹</code> </td><td colspan=2><code>+´∘×⎉1‿∞⁼</code> I guess</td> </tr>
<tr><td> <code>⌷</code> </td><td> N/A </td> <td> <code>⊏</code></td> </tr>
</table>
<table>
<tr><th colspan=3>Operators</th></tr>
<tr><th> Syntax </th><th> Monadic </th><th> Dyadic </th></tr>
<tr><td> <code>⌿</code> </td><td> <code>´</code> </td><td> <code>↕</code> </td></tr>
<tr><td> <code>⍀</code> </td><td colspan=2> <code>↑</code> or <code>`</code> </td></tr>
<tr><td> <code>¨</code> </td><td colspan=2> <code>¨</code> </td></tr>
<tr><td> <code>⍨</code> </td><td colspan=2> <code>˜</code> </td></tr>
<tr><td> <code>⍣</code> </td><td colspan=2> <code>⍟</code> </td></tr>
<tr><td> <code>f.g</code> </td><td> </td><td> <code>f´∘g⍟1‿∞</code> </td></tr>
<tr><td> <code>∘.f</code> </td><td> </td><td> <code>f⌜</code> </td></tr>
<tr><td> <code>A∘g</code> </td><td> <code>A⊸g</code> </td><td> </td></tr>
<tr><td> <code>f∘B</code> </td><td> <code>f⟜B</code> </td><td> </td></tr>
<tr><td> <code>f∘g</code> </td><td colspan=2> <code>f⟜g</code> </td></tr>
<tr><td> <code>f⍤B</code> </td><td colspan=2> <code>f⎉B</code> </td></tr>
<tr><td> <code>f⍤g</code> </td><td colspan=2> <code>f∘g</code> </td></tr>
<tr><td> <code>f⍥g</code> </td><td colspan=2> <code>f○g</code> </td></tr>
<tr><td> <code>f@v</code> </td><td colspan=2> <code>f⌾(v⊸⊏)</code> </td></tr>
<tr><td> <code>f⍠B</code> </td><td colspan=2> Uh </td></tr>
<tr><td> <code>f⌸</code> </td><td colspan=2> <code>⊔</code> </td></tr>
<tr><td> <code>f⌺B</code> </td><td colspan=2> <code>↕</code> </td></tr>
<tr><td> <code>A⌶</code> </td><td colspan=2> <code>•</code> </td></tr>
<tr><td> <code>f&</code> </td><td colspan=2> Nothing yet </td></tr>
</table>
|