aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/c.bqn20
-rw-r--r--src/r1.bqn12
2 files changed, 16 insertions, 16 deletions
diff --git a/src/c.bqn b/src/c.bqn
index 77448b28..d5995fab 100644
--- a/src/c.bqn
+++ b/src/c.bqn
@@ -26,7 +26,7 @@ Pl←∾⟜("s"/˜1<≠) # Pluralize
_tmpl←{∾𝕗{𝕎𝕩}¨<𝕩} # Template
# Convert characters to numbers, mostly the same as tokens
CharCode←charSet{
- ErrUnknownChars←0!˜⟨"Unknown character"⊸Pl,": ",⊢⟩_tmpl
+ ErrUnknownChars←!⟨"Unknown character"⊸Pl,": ",⊢⟩_tmpl
Chk ← ⊢⊣ErrUnknownChars∘(≠/⊣)⍟≢⟜(⊏⟜𝕗)
g←⍋𝕗 ⋄ ⊢ Chk g⊏˜1-˜1⌈(g⊏𝕗)⍋⊢
}
@@ -46,7 +46,7 @@ Tokenize←{System‿vars←𝕨
Se←{(⊏˜𝕨)Se 1¨⌾((𝕩/𝕨)⊸⊏)𝕩}⍟(0=¯1⊑⊢) # Mark reachable openings
St←(≠𝕩)↑·/⁼((≠↑∾⟜≠Se 1∾0¨)q⍋e)⊸/ # All indices → reached mask
a←St q⋄b←St e⋄f←1≠`ab←a∨b # Open/close masks; filter
- {⟨⊑/𝕩,"Unclosed quote"⟩!0}⍟(∨´)(sm∨dm)∧b<f
+ {!⟨⊑/𝕩,"Unclosed quote"⟩}⍟(∨´)(sm∨dm)∧b<f
# Extract character and string literals
u←f∧𝕩='@'⋄ci←/u∨»a∧sm
@@ -61,10 +61,10 @@ Tokenize←{System‿vars←𝕨
nd←(t=⊑bN)>«t M bD⋄rr←t=bR # Namespace dot; 𝕣
w←»⊸<l←rr∨nd<t M bN(⊣≍-˜)○⊑bW # Word chars l, start w
us←t=¯1++´bA⋄sy←t=⊑bW # Underscore, system dot
- {⟨/us∧w+`⊸⊏0∾𝕩,"Words can't only have underscores"⟩!0}⍟(∨´)w(/<1(⊢/«)(∨/⊣))l>us
+ {!⟨/us∧w+`⊸⊏0∾𝕩,"Words can't only have underscores"⟩}⍟(∨´)w(/<1(⊢/«)(∨/⊣))l>us
wk←(¬w/rr)×na⌊∘÷˜(⊑bA)-˜w/t # Kind of word from first char
t-↩na×l∧t≥na+⊑bA # Case-insensitive
- {⟨𝕩/is,"System dot with no name"⟩!0}⍟(∨´)sy>«l
+ {!⟨𝕩/is,"System dot with no name"⟩}⍟(∨´)sy>«l
w≠↩»⊸∨sy # Start system word at dot
wi←0<wt←(2×wk≥0)(×⟜¬+⊢)w/sy # Type: 0 number, 1 system, 2 identifier
i←l>n←l∧(+`w)⊏0∾¬wi # Identifier/Number masks
@@ -73,8 +73,8 @@ Tokenize←{System‿vars←𝕨
if←(»⌈`)⊸<ig←(i>us)×+`w>n # Identifier groups and first character
fr←(1=wi/wt)<if/rr # Identifier is 𝕣-based
w↩if∨n∧w0←w⋄ws←1=0⊸<⊸/wt/˜↩¬w/rr # Don't produce an identifier for 𝕣
- {⟨𝕩/is,"𝕣 can't be used with other word characters"⟩!0}⍟(∨´)(i>us)∧(rr⊸≠∨if⊸<)ig⊏0∾fr
- {⟨is⊏˜𝕩/𝕨,"Numbers can't start with underscores"⟩!0}⍟(∨´⊢)⟜(ws<(⊑bA)>⊏⟜t)/rr<if
+ {!⟨𝕩/is,"𝕣 can't be used with other word characters"⟩}⍟(∨´)(i>us)∧(rr⊸≠∨if⊸<)ig⊏0∾fr
+ {!⟨is⊏˜𝕩/𝕨,"Numbers can't start with underscores"⟩}⍟(∨´⊢)⟜(ws<(⊑bA)>⊏⟜t)/rr<if
ig⊏↩1-˜0∾+`⊸׬fr
id←vars⊸∾⌾⊑(ws∾2)⊔ig⊔t⊏charSet # ⟨Identifiers, system values⟩
@@ -98,7 +98,7 @@ Tokenize←{System‿vars←𝕨
# 𝕩 is a list of tokens that contains the numeric literals, each
# preceded by 0. Return the numbers.
ReadNums←{
- _err_←{(0!˜/⟜𝔾≍○<𝔽)⍟(∨´)}
+ _err_←{(!/⟜𝔾≍○<𝔽)⍟(∨´)}
EChars←⟨"Letter"⊸Pl," """,⊏⟜charSet,""" not allowed in numbers"⟩_tmpl
e‿d‿n‿p‿i←=⟜𝕩¨((⊑bA)+-´"ea")∾+⟜↕´bN # Masks for e.¯π∞
EChars∘(/⟜𝕩)_err_𝕨 (𝕩=bR)∨¬e∨𝕩<⊑bA
@@ -123,9 +123,9 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn
Lcs ← ∧○(0<≠)◶⟨0, ¯1 ⊑ 0¨∘⊢ {𝕩⌈⌈`𝕨+»𝕩}˝ =⌜⟜⌽⟩
_mis_ ← {"Missing "∾𝕗∾" "∾charSet⊏˜𝕘+⊢/˜≠∘⊣=⊒}
Msg ← >○≠◶⟨"opening"_mis_ 0, "closing"_mis_ 1˜⟩
- 0 !˜ 𝕨 (Lcs<⌊○≠)◶⟨Msg,"Malformed bracket nesting"⟩ 𝕩
+ ! 𝕨 (Lcs<⌊○≠)◶⟨Msg,"Malformed bracket nesting"⟩ 𝕩
}
- _err_←{(0!˜(∧∘⍉(i≍e˙)⊏⎉1˜/⟜𝔾)≍○<𝔽)⍟(∨´⍟=)}
+ _err_←{(!(∧∘⍉(i≍e˙)⊏⎉1˜/⟜𝔾)≍○<𝔽)⍟(∨´⍟=)}
# Bracket and ligature validation and handling
# Open brackets have role ¯1 and closed ones have role 0
@@ -315,7 +315,7 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn
}
Compile←{
- defaults←⟨⟩‿(("System values not supported"!0˙)¨)‿⟨⟩‿(↕0)
+ defaults←⟨⟩‿(!∘"System values not supported"¨)‿⟨⟩‿(↕0)
prims‿Sys‿vars‿redef ← ∾⟜(≠↓defaults˙) ≍○<⍟(4<≠)𝕨
⟨tok,role,val,t0,t1⟩←tx←sys‿vars Tokenize 𝕩
⟨oc,prim,blk,bdy,oi⟩←⟨role,⊑val,t0,t1,redef»0¨vars⟩ Parse tok
diff --git a/src/r1.bqn b/src/r1.bqn
index d9a9c243..330b47f0 100644
--- a/src/r1.bqn
+++ b/src/r1.bqn
@@ -31,7 +31,7 @@ Split2 ← { s←2⊸×⌜↕(≠𝕩)÷2 ⋄ ⟨s⊏𝕩,(1⊸+⌜s)⊏𝕩⟩
_lookup_ ← {
k‿v←Split2 𝕘 ⋄ k _glyphLookup_ (v∾⟨𝕗⟩)
}
-Identity ← {𝕏0} ("´: Identity not found"!0˙) _lookup_ ⟨
+Identity ← {𝕏0} !∘"´: Identity not found" _lookup_ ⟨
'+',0 , '-',0
'×',1 , '÷',1
'⋆',1 , '¬',1
@@ -285,7 +285,7 @@ Select ← ⟨"⊏"
{(≠𝕩)⊸NormIndS⌜𝕨} ⊏ ⊢
{𝕩⊸NormIndS⌜𝕨}
⟩_multiAxis○ToArray
-First ← IsArray◶⟨⊢, (0<≠)◶⟨"⊑𝕩: 𝕩 can't be empty"!0˙,0⊸⊑⟩⥊⟩
+First ← IsArray◶⟨⊢, (0<≠)◶⟨!∘"⊑𝕩: 𝕩 can't be empty",0⊸⊑⟩⥊⟩
Reverse←{
"⌽𝕩: 𝕩 must have rank at least 1" ! 1≤=𝕩
@@ -711,8 +711,8 @@ _repeat_←{
> ↩ Merge ⊘ ((1-≤) _perv)
≠ ↩ ≠ ⊘ ((1-=) _perv)
= ↩ = ⊘ (= _perv)
-≥ ← ("≥: Needs two arguments"!0˙) ⊘ (≥ _perv)
-≤ ↩ ("≤: Needs two arguments"!0˙) ⊘ (≤ _perv)
+≥ ← !∘"≥: Needs two arguments" ⊘ (≥ _perv)
+≤ ↩ !∘"≤: Needs two arguments" ⊘ (≤ _perv)
+ ↩ + _perv
- ↩ - _perv
¬ ← 1+-
@@ -785,13 +785,13 @@ TrainInverse ← {
}
FuncInverse ← (0⊸⊑ ⊣◶⟨
{PrimInverse𝕩} 1⊸⊑ # 0 primitive
- ("Cannot currently invert blocks"!0˙)˙ # 1 block
+ (!∘"Cannot currently invert blocks")˙ # 1 block
1⊸⊑ AtopInverse 2⊸⊑ # 2-train
TrainInverse # 3-train
1⊸⊑ {𝕏𝕨}⟜{Mod1Inverse𝕩} 2⊸⊑ # 4 1-modifier
1‿3⊸⊏ {𝕏´𝕨}⟜{Mod2Inverse𝕩} 2⊸⊑ # 5 2-modifier
⟩ ⊢) {Decompose𝕩}
-Inverse ← Type◶(3‿1‿2/{⊢⊣𝕩IX∘≡⊢}‿FuncInverse‿("Cannot invert modifier"!0˙))
+Inverse ← Type◶(3‿1‿2/{⊢⊣𝕩IX∘≡⊢}‿FuncInverse‿(!∘"Cannot invert modifier"))
∾ ↩ Join ⊘ JoinTo
IA ← "⁼: Inverse failed"⊸!