在 APL 中声明多行函数时出现问题

Per*_*ord 6 scripting apl dyalog

#!/usr/bin/dyalog -script\n\xe2\x8d\x9d /usr/bin/dyalog is a symlink to /opt/mdyalog/18.0/64/unicode/mapl\n\nfactors\xe2\x86\x90{\xe2\x8e\x95ML \xe2\x8e\x95IO\xe2\x86\x901 \xe2\x8b\x84  \xe2\x8d\xb5{ \xe2\x8d\xb5,(\xe2\x8d\xba\xc3\xb7\xc3\x97/\xe2\x8d\xb5)~1}\xe2\x88\x8a\xe2\x8d\xb5{(0=(\xe2\x8d\xb5*\xe2\x8d\xb3\xe2\x8c\x8a\xe2\x8d\xb5\xe2\x8d\x9f\xe2\x8d\xba)|\xe2\x8d\xba)/\xe2\x8d\xb5}\xc2\xa8\xe2\x8d\xac{nxt\xe2\x86\x90\xe2\x8a\x83\xe2\x8d\xb5 \xe2\x8b\x84 msk\xe2\x86\x900\xe2\x89\xa0nxt|\xe2\x8d\xb5 \xe2\x8b\x84 \xe2\x88\xa7/1\xe2\x86\x93msk:\xe2\x8d\xba,\xe2\x8d\xb5 \xe2\x8b\x84 (\xe2\x8d\xba,nxt)\xe2\x88\x87 msk/\xe2\x8d\xb5}\xe2\x8d\xb5{ (0=\xe2\x8d\xb5|\xe2\x8d\xba)/\xe2\x8d\xb5}2,(1+2\xc3\x97\xe2\x8d\xb3\xe2\x8c\x8a0.5\xc3\x97\xe2\x8d\xb5*\xc3\xb72),\xe2\x8d\xb5}\nfactors 20\n
Run Code Online (Sandbox Code Playgroud)\n

从https://dfns.dyalog.com/c_factors.htm复制\n它的工作原理与示例完全相同,除了我无法将其作为单独的行输入并且必须求助于\xe2\x8b\x84\'s

\n

使用该示例会导致

\n
./.local/src/sandbox/apl/Main.apl                                                                                                                                                                                                     \nSYNTAX ERROR\n factors\xe2\x86\x90{\xe2\x8e\x95ML \xe2\x8e\x95IO\xe2\x86\x901          \xe2\x8d\x9d Prime factors of \xe2\x8d\xb5.\n
Run Code Online (Sandbox Code Playgroud)\n

另一个问题是使用像或 这样]的命令\n使用它们总是会导致]display]box on

\n
./.local/src/sandbox/apl/Main.apl                                                                                                                                                                                                     \n\nVALUE ERROR: Undefined name: \xe2\x8e\x95SE.UCMD\n
Run Code Online (Sandbox Code Playgroud)\n

Adá*_*dám 5

尝试*添加设置DYALOG_LINEEDITOR_MODE添加到 1:

\n
#!/usr/bin/dyalog -script DYALOG_LINEEDITOR_MODE=1\n
Run Code Online (Sandbox Code Playgroud)\n

在脚本模式下运行时,SALT 以及用户命令不会自动初始化。根据APLcart,您可以通过以下方式启用两者:

\n
(\xe2\x8e\x95NS\xe2\x8d\xac).(_\xe2\x86\x90enableSALT\xe2\x8a\xa3\xe2\x8e\x95CY\'salt\')\n
Run Code Online (Sandbox Code Playgroud)\n

然而,在程序控制下,使用正确的函数通常比使用用户命令更好。您可以复制 和display函数(它接受一个数组并生成与您从和disp中看到的字符矩阵等效的字符矩阵)]display]box on) with:

\n
\'display\' \'disp\'\xe2\x8e\x95CY\'dfns\'\n
Run Code Online (Sandbox Code Playgroud)\n
\n

* 和 均-scriptDYALOG_LINEEDITOR_MODE18.0 版本中处于实验阶段,而 18.2(计划于 2022 年 3 月发布)专门提供了 #! 脚本支持。

\n