diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-08-01 21:08:45 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-08-01 22:16:10 -0400 |
| commit | 53671f739683445730cbd8bef8893ed31a685ac9 (patch) | |
| tree | 85e68a23b3468f0ea5b80e94e48434b852fbf083 | |
| parent | b972316dacfe6e138d8d81b579ab6f1097fa1fc8 (diff) | |
Explicit pervasion in impl.bqn
| -rw-r--r-- | impl.bqn | 46 |
1 files changed, 26 insertions, 20 deletions
@@ -10,18 +10,10 @@ β β {π¨((π¨πΎπ©)ββ’βΏπ){π½}π©} # LIMITED to boolean right operand result # LIMITED to numeric arguments for scalar cases -β β ββ(Γ·2) β (ββΓ·Λ) -β§ β Γ -β¨ β (+-Γ) -Β¬ β 1+- -< β {β¨β©β₯β¨π©β©} β (Β¬β€Λ) -> β (Β¬β€) -β₯ β !β0 β (β€Λ) +< β {β¨β©β₯β¨π©β©} β (1-β€Λ) +> β (1-β€) β’ β© IsArrayβΆβ¨β©βΏβ’ # LIMITED to monadic case -Length β (0<0ββ’)βΆβ¨1β0ββ’β©ββ’ -β β Length β (Β¬β=) -Γ β© 0βΈ(<->) β Γ -| β ΓβΓ β {π©-π¨Γβπ©Γ·π¨} +β β (0<=)βΆβ¨1β0ββ’β© _foldβ{ ! 1==π© @@ -35,18 +27,16 @@ _foldβ{ #β # LAYER 2: Pervasion -# After defining _perv, we apply it to all scalar functions, -# making them pervasive. I'm not going to write that out. -ToArray β <β(Β¬IsArray) +ToArray β <β(1-IsArray) βΎ β {kββ π¨βkβΈβ€βΆβ¨ββπ¨β-βkβπ©Λβ©ββk+β π©} # LIMITED to two vector arguments _eachdβ{ _eβ{ # π¨ has smaller or equal rank kββ pββ’π¨ β qββ’π© - ! β§Β΄(ββp=ββq)ββk - lβΓΒ΄(qβΛkβΈ+)ββqβ βΈ-k + ! 1ΓΒ΄(ββp=ββq)ββk + lβ1ΓΒ΄(qβΛkβΈ+)ββqβ βΈ-k aββ₯π¨ β bββ₯π© qβ₯β₯(β a) (ββaπ½lβΈΓβΈ+βbΛ)βββ l } @@ -56,12 +46,28 @@ _eachdβ{ Β¨ β© {(π½β)β(π½_eachdβToArray)} _pervβ{ # Pervasion - (β’ββ¨βIsArray)βΆβ¨π½βπ½{π¨π½_pervπ©}Β¨β© + (β’β(+-Γ)βIsArray)βΆβ¨π½βπ½{π¨π½_pervπ©}Β¨β© } -β β© β β ({(π¨>π©)βπ¨βΏπ©} _perv) -β β -βββ- β ({(π¨<π©)βπ¨βΏπ©} _perv) -identity β {(0βπ¨){π=π©}βΆπ©βΏ(1βπ¨)}Β΄ β¨+βΏ0,-βΏ0,ΓβΏ1,Γ·βΏ1,ββΏ1,ββΏ1,β§βΏ1,β¨βΏ0,|βΏ0,ββΏβ,ββΏΒ―β,<βΏ0,β€βΏ1,=βΏ1,β₯βΏ1,>βΏ0,β βΏ0,ββ¨!β0β©β© ++ β© + _perv +- β© - _perv +Γ β© (0βΈ(<->) β Γ) _perv +Γ· β© Γ· _perv +β β© β _perv +β β ββ(Γ·2) β (ββΓ·Λ) +β β© (β β {(π¨>π©)βπ¨βΏπ©}) _perv +β β (-βββ- β {(π¨<π©)βπ¨βΏπ©}) _perv +| β (ΓβΓ β {π©-π¨Γβπ©Γ·π¨}) _perv +Β¬ β 1+- +β§ β Γ +β¨ β (+-Γ) +< β© {β¨β©β₯β¨π©β©} β ((Β¬β€Λ) _perv) +> β© > _perv +β β© β β (Β¬β= _perv) += β© = β (= _perv) +β€ β© !β0 β (β€ _perv) +β₯ β !β0 β (β€Λ_perv) +identity β {(0βπ¨){π=π©}βΆπ©βΏ(1βπ¨)}Β΄ β¨+βΏ0,-βΏ0,ΓβΏ1,Γ·βΏ1,ββΏ1,ββΏ1,β§βΏ1,β¨βΏ0,|βΏ0,ββΏβ,ββΏΒ―β,<βΏ0,β€βΏ1,=βΏ1,β₯βΏ1,>βΏ0,β βΏ0,0ββ¨!β0β©β© #β |
