1996年前可用的逐行输出APL数组各元素的传统方法是什么
兼容传统APL标准的逐元素打印方案
首选通用方案(全实现兼容,1970年代已标准化)
使用标量左参数配合外积运算符即可实现需求,无需dfn、tradfn,远早于1996年的时间要求,且在Dyalog APL、GNU APL等所有主流APL实现中均可正常运行,嵌套字符向量也不会出现缩进或带框的问题:
arr ← 1 2 3 1 ∘.⎕← arr 1 2 3 text ← 5/⊂'Line of text' 1 ∘.⎕← text Line of text Line of text Line of text Line of text Line of text
实现原理
∘.是APL的外积运算符,当左操作数为任意标量时(示例中使用1,换成任意标量如0、''效果都相同),会将标量与右操作数数组的每一个元素一一配对,依次执行给定的二元函数。⎕←作为二元函数使用时会忽略左参数,直接输出右参数并返回右参数值,刚好匹配逐元素输出的需求。- 由于每次调用
⎕←都是直接输出单个元素,不会触发嵌套数组的boxing显示逻辑,输出效果和dfn包装的{⎕←ω}¨完全一致。
可选简化写法(兼容所有支持APL2标准的实现)
如果你使用的APL实现支持1980年代APL2引入的rank算子(Dyalog、GNU APL均支持),可以用更直观的写法:
⎕←⍤0⊢ text Line of text Line of text Line of text Line of text Line of text
⍤0表示将⎕←应用到数组的每个0秩元素(即单个元素)上,效果和外积写法完全一致。
内容的提问来源于stack exchange,提问作者Mark Reed
相关产品推荐
相关产品推荐

