3

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 的完全初学者。谁能解释一下导致这个语法错误的原因?

4

3 回答 3

4

您的第一个示例使用传统的 APL“del”表示法来定义函数。后两个示例使用直接定义(通常称为 dfns - 发音为 dee-funs),它是 Dyalog APL 的扩展,显然不能在您使用的解释器中运行。以这种方式轻松定义函数是一个很大的优势。

于 2013-11-07T19:12:59.793 回答
2

GNU APL 现在支持这种 dfns;您可以通过从 subversion 存储库编译它来尝试它或等待 1.3 版本。

于 2014-02-17T19:03:38.167 回答
2

并非所有 APL 都支持 dfns(大括号中的函数片段)语法。如果不支持,预计会出现语法错误或 nonce 错误。

据我所知,只有 Dyalog APL 和 NGN APL(参见http://ngn.github.io/apl/web/)支持它。

Sharp APL 具有直接定义功能,但语法却大不相同。

NGN APL 不支持遗留函数定义,仅支持 dfns。

于 2013-11-11T16:05:24.263 回答