diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-08-11 20:55:04 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-08-11 20:55:04 -0400 |
| commit | 516919d53ad441d24dba88cd5fbd10c9c72a2b02 (patch) | |
| tree | cfa0671c9db0350629d06d46028daeca07fd2909 /src | |
| parent | 2afb23928e1984d475cc460e1672e8f6fa0e4dbe (diff) | |
Fix computation of never-Nothing indicator nn
Diffstat (limited to 'src')
| -rw-r--r-- | src/c.bqn | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -220,8 +220,8 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn "Nothing (·) cannot be assigned"_nerr ne×a oa←⌽/hf<op←(er<2)∧r≥2⋄ro←op∨«op∧m2←r=3 # op: active modifiers; ro: mod or right operand "Missing operand"_nerr op×2(«⌈m2×»)no⌈2×m2≥ro∨r∊↕2 - s←𝕩=sep⋄fo←𝕩=2+⊑bB⋄ls←s∧fo<○IT lo←𝕩=4+⊑bB # List Separators: after ⟨lo, not {fo - fc←𝕩=1+⊑bH + s←𝕩=sep⋄fo←𝕩∊⟨2+⊑bB,1+⊑bH⟩ # Separators, function open { or ; + ls←s∧fo<○IT lo←𝕩=4+⊑bB # List Separators: after ⟨lo, not {fo "Can't use Nothing (·) in lists"_nerr ne×»lo∨ls "Double subjects (missing ‿?)"_err_(G) ∧⟜«ro»⊸∨⊸<r=0 ma←tr<(𝕩=2+⊑bG)∧«ir≥1 # Modified assignment @@ -235,6 +235,7 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn fw←H gi⊏nx # Bodies where 𝕨 must be defined {"Can't return Nothing (·)"_err_(𝕩⊏⍋∘Rev) 2=fw⌈↩nf¬⊸×𝕩⊏nr} 1-˜0∾cc⊏rev "Invalid use of 𝕨 in monadic case"_err_(/CB) 1↓fw∧cw=0 + fw∨↩2=cw nn←fo+`⊸⊏fw⋄no(⊣-=)↩nn⋄ne(⊣-=)↩nn # fw indicates 𝕨 is never Nothing "Assignment target must be a name or list of targets"_err_(G) (a∨aid∨ps∨𝕩(=⟜(3+⊑)<M)bB)<aa "Can't nest assignments (write aliases with ⇐)"_err_(ai⊏G) (ak=2)<ai⊏aa @@ -282,7 +283,7 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn cn←pi∾lt←/𝕩≥cl←vi+nv⋄ob∾↩(cl-˜≠u)+lt⊏𝕩 # Constants bk←c⊏gi # Block loads ll←sll∾˜(¬lo/1«ps)+-⟜»1↓(lo∾1)/+`ls∾0 # List Length - dr←/s>(2=ne)∨ls∨»r=¯5⋄rt←/fo∨fc # Drop (block separator) and return + dr←/s>(2=ne)∨ls∨»r=¯5⋄rt←/fo # Drop (block separator) and return fl←(dy×⊏⟜os)⊸+fa+dy # Function application site dr∾↩((1+dy)×fn←2=fm←fa⊏ne)/fl # Turn function applications on · to drops fn↩¬fn⋄fa/˜↩fn⋄fl/˜↩fn # And remove them |
