1

我有以下要保存在.dyalog文件中的 APL 函数:

⍝ Project Euler Solutions

 summul ← {+/⍵×⍳⌊1000÷⍵}
 euler1 ← (summul 3) + (summul 5) - (summul 15)

但是当我在 Dyalog APL 编辑器中输入此代码并单击Save and Return按钮时,我得到了错误 Cannot fix object without a name

这个错误是什么意思?我究竟做错了什么?

4

2 回答 2

3

Dyalog 编辑器旨在一次编辑单个项目(函数、运算符、命名空间脚本) - 它不能用于一次定义两个函数,除非您将它们嵌入命名空间中。您的选择是:

将这两行输入到 APL 会话中,然后使用以下命令创建两个 .dyalog 文件:

]save summul /yourfolder/summul
]save euler1 /yourfolder/euler1

或者,使用 )ed ⍟euler 启动编辑器,这将创建一个命名空间,您可以将这些行粘贴到其中。请注意,您随后需要使用命名空间前缀来引用函数,例如 euler.summul。

于 2021-05-29T05:41:49.830 回答
1

您还应该注意,那里只有一个功能。第二行是表达式,不是函数,在 Dyalog 函数编辑器中不能自行保存。除了上面 Morten 的解决方案之外,您还可以创建一个定义 summul 然后计算表达式的函数:

eulerOne←{
     summul←{+/⍵×⍳⌊1000÷⍵}
     (summul 3)+(summul 5)-(summul 15)
 }

您必须向此函数传递一个虚拟参数才能执行它(例如零)。一个有趣的事情可能是重写函数以将向量 3 5 15 作为参数。

于 2021-05-29T14:23:06.240 回答