我GNU APL 1.1 (svn 4460)
在 Linux 上使用2.6.32
,但函数定义存在一些问题。
此代码段按预期工作:
∇R←ODD N
R←2|N
∇
(ODD L)/L←⍳10
但是当我尝试这个
{2|⍵} 5
或这个
ODD←{2|⍵}
我收到语法错误。相同的片段在这里运行良好。
我是 APL 的完全初学者。谁能解释一下导致这个语法错误的原因?
您的第一个示例使用传统的 APL“del”表示法来定义函数。后两个示例使用直接定义(通常称为 dfns - 发音为 dee-funs),它是 Dyalog APL 的扩展,显然不能在您使用的解释器中运行。以这种方式轻松定义函数是一个很大的优势。
GNU APL 现在支持这种 dfns;您可以通过从 subversion 存储库编译它来尝试它或等待 1.3 版本。
并非所有 APL 都支持 dfns(大括号中的函数片段)语法。如果不支持,预计会出现语法错误或 nonce 错误。
据我所知,只有 Dyalog APL 和 NGN APL(参见http://ngn.github.io/apl/web/)支持它。
Sharp APL 具有直接定义功能,但语法却大不相同。
NGN APL 不支持遗留函数定义,仅支持 dfns。