Implementation Comparisons

From NARS2000
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Features Missing in NARS2000

  • Selective Assignment: The syntax of (...)←... where the code inside of the parens selects elements of a named array is missing from NARS2000. It may be emulated by using Indexed Assignment:
    Dyalog: ((⊂ L)⌷R)←...
    NARS2000: R[L]←...

Differences With Dyalog APL

Different designers make different choices. Neither should be considered Good or Bad, just different. Here are a few of the differences between Dyalog APL and NARS2000:

  • Multi-name assignment in Dyalog does not require parens, whereas NARS2000 does
    Dyalog: i j ←⍺
    NARS2000: (i j)←⍺
  • A Train assigned to a name does not require parens in Dyalog, but are required in NARS2000
    Dyalog: e← -phi grad
    NARS2000: e←(-phi grad)
  • Dyalog's definition of the monadic function depends upon the value of ⎕ML (⎕ML<2 is Mix, ⎕ML≥2 is First), whereas NARS2000 uses the monadic function for Mix and for First
    Dyalog: csc←{sign↑⍳n⍴n←⍴⍵}
    NARS2000: csc←{sign⊃⍳n⍴n←⍴⍵}
  • I'm not sure about Dyalog, but I know that NARS2000 does not have the concept of Rank well-integrated into its implementation.
  • The Binding Strength Rules are different. In NARS2000, a numeric strand as the right operand to an operator must be enclosed in parens
    Dyalog: ⍤ 0 1
    NARS2000: ⍤(0 1)