我有以下要保存在.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
。
这个错误是什么意思?我究竟做错了什么?
Dyalog 编辑器旨在一次编辑单个项目(函数、运算符、命名空间脚本) - 它不能用于一次定义两个函数,除非您将它们嵌入命名空间中。您的选择是:
将这两行输入到 APL 会话中,然后使用以下命令创建两个 .dyalog 文件:
]save summul /yourfolder/summul
]save euler1 /yourfolder/euler1
或者,使用 )ed ⍟euler 启动编辑器,这将创建一个命名空间,您可以将这些行粘贴到其中。请注意,您随后需要使用命名空间前缀来引用函数,例如 euler.summul。
您还应该注意,那里只有一个功能。第二行是表达式,不是函数,在 Dyalog 函数编辑器中不能自行保存。除了上面 Morten 的解决方案之外,您还可以创建一个定义 summul 然后计算表达式的函数:
eulerOne←{
summul←{+/⍵×⍳⌊1000÷⍵}
(summul 3)+(summul 5)-(summul 15)
}
您必须向此函数传递一个虚拟参数才能执行它(例如零)。一个有趣的事情可能是重写函数以将向量 3 5 15 作为参数。