RIDE(APL)中的多线输入?

Multi-line inputs in RIDE (APL)?

我希望按如下方式输入多行数组:

ast ← ('∘'
           ('a' ('p'))
           ('b' 
             ('q' ('v'))
             ('r'))
           ('c' 
             ('s' ('w' 'x'))
             ('t' ('y' 'z'))))

这是正确的括号化,但我无法将其复制粘贴到 Dyalog APL RIDE 界面中。我四处搜索,找到了两个对我没有帮助的答案:

那么,如何在APL中输入多行数据

会话目前不支持多行数组。

目前,您仍然需要在大多数情况下以编程方式创建多维数组(尽管您可以,例如,创建一个可编辑的文本矩阵,用 "numbers" 填充它,然后使用 ⍎¨)

cmat←⍪''
)ed cmat

粘贴这个

0123
2314
1244

然后修复它(按 Esc)并使用

      ⍎¨cmat

对我来说,我发现大多数时候 Shift-Enter 和 Ctrl-Enter 是我最好的朋友

您似乎在尝试将树表示为嵌套数组(有关更多信息,请查看 dfns tview 和 tnest 以及其他树相关内容)。因此,看起来您真的不需要多行(APL 中的所有数组都是超矩形的)?

ast←('∘'('a' ('p'))('b'('q'('v'))('r'))('c'('s' ('w' 'x'))('t' ('y' 'z'))))

如果传统函数 (tradfns) 使用会话输入格式,则可以轻松复制和粘贴:

     ∇ r ← larg Fun rarg
     r ← larg, rarg
     ∇

可以粘贴多行dfns。首先使用]dinput用户命令。

      ]dinput

然后粘贴

      dfn ← {
   ⍺, ⍵
}

(顺便说一句,关于前面评论中的 ,您可以粘贴多行 dfn 并在前面添加 ,但您必须将 放在最后一行 [n] 然后回车修复函数。]dinput 用户命令稍微简单一点)

除了,需要注意的是,Dyalog在两个方面都致力于多线阵列:

设计新的多行数组表示法

  • 最新版本是presented in 2018

  • ⎕SE.Link.Serialise 可以从大多数数组创建多行符号

  • ⎕SE.Link.Deserialise 将 return 其参数符号指定的数组 array

多线会话输入

  • 18.0 版(2020 年夏季发布)包括实验性多线会话支持。它必须通过配置参数启用。

  • 它将检测未完成的 dfns(例如 MyFn←{4{)和控制结构(例如 :If myVar>5:Class MyCl)但不检测数组符号.

  • 18.0 还将包含一个工具,⎕SE.Link.Array 允许在 dfn 中包装多行数组符号:

{
 [1 2 3
  4 5 6]
}⎕SE.Link.Array⍬