GNU APL使用⍸运算符报SYNTAX ERROR++语法错误如何解决?
问题原因
你遇到的⍸符号报语法错误的核心原因是:⍸(Where原语,用于返回布尔数组中非零元素的索引)不属于GNU APL 1.7、1.8正式稳定版的内置原语集合。你用到的在线运行环境使用的是GNU APL的开发分支快照,已经提前加入了对该扩展原语的支持,所以可以正常运行。
你编译时修改WERROR标记的操作和该报错没有关联,这是GNU APL稳定版源码在高版本GCC下的已知兼容性问题,关闭WERROR不会影响APL解释器的功能。
解决方案
你可以选择以下任意一种方式解决问题:
- 用GNU APL稳定版原生支持的语法替代
⍸,等效实现逻辑为:对于布尔数组u,(,u)/,⍳⍴u和⍸u的返回结果完全一致。你可以先自定义通用的where函数复用:where←{(,⍵)/,⍳⍴⍵} ⍝ 之后就可以用where替代⍸ where u app←{where 6=⍵∘.+⍵} - 切换到GNU APL的开发分支编译安装,开发分支已经内置了
⍸原语的支持,可以直接使用你原来的代码。
内容的提问来源于stack exchange,提问作者J. D.
相关产品推荐
相关产品推荐

