2015-07-12 121 views
3

APL中是否存在行继续字符,即表示输入尚未完成并继续解析下一行的字符?APL中的行继续

我之所以希望它是输入以类似于其形状的格式,例如,一个阵列,而不是:

Forecast ← 4 6 ⍴ 150 200 100 80 80 80 300 330 360 400 500 520 100 250 350 380 400 450 50 120 220 300 320 350 

我想写(其中\是假想延续字符):

Forecast ← 4 6 ⍴ \ 
150 200 100 80 80 80 \ 
300 330 360 400 500 520 \ 
100 250 350 380 400 450 \ 
50 120 220 300 320 350 

我使用GNU APL,如果是重要的,而且我是一个几乎完全是个新手,所以如果我根本就没有看到它的歉意。

回答

5

不,在我所知的任何现代APL版本中都没有任何线条延续字符。

但是你有一个观点 - 定义数组的视觉保真度很重要,但它在语言层面上从未真正解决过。

我可能会做

Forecast ← 4 6 ⍴ 150 200 100 80 80 80, 300 330 360 400 500 520, 100 250 350 380 400 450, 50 120 220 300 320 350 

Forecast ← 0 ⍴ 0 
Forecast ← Forecast, 150 200 100 80 80 80 
Forecast ← Forecast, 300 330 360 400 500 520 
Forecast ← Forecast, 100 250 350 380 400 450 
Forecast ← Forecast, 50 120 220 300 320 350 
Forecast ← 4 6 ⍴ Forecast 

时明确格式是必要的。

几年前,某些版本的APL允许您在函数中输入带嵌入式回车符的字符串,只需在完成之前不输入尾部引号即可。该功能具有类似的效果,但仅适用于字符串,并且仅适用于单一功能行。它最终从IBM APL和Sharp APL中删除,可能还有很多其他的。对于那些似乎是输入循环的用户,或者本地del编辑器之后无法处理这些行,可能会让用户感到困惑。

2

随着GNU APL(也许其他版本),可以使用下面的语法:

A ← ⊃⍎¨⎕INP 'END' 
    1 0 0 
    0 1 0 
    0 0 1 
'END' 

问候

2

Dyalog的MiServer使用一个伟大的命令,它使开发人员包括JS-代码,作为APL代码页面的一部分,需要通过一个函数“ScriptFollows”来简单地扫描这条语句后面的行,并返回下一段连续注释行的所有文本。 这种想法也可能是(AB-)用于帮助您的要求:

∇ foo 
⍝ required functions need to be in the WS or can be defined here: 
dtlb←{⍵{((∨\⍵)∧⌽∨\⌽⍵)/⍺}' '≠⍵} ⍝ delete trailing blanks 
ScriptFollows←{{∊{'⍝'=⊃⍵:'' ⋄ ' ',dtlb ⍵}¨1↓¨⍵/⍨∧\'⍝'=⊃¨⍵}dtlb¨(1+2⊃⎕LC)↓⎕NR 2⊃⎕SI} 
⍝ end of initialization... 
⍝ and then could just write: 

arr←4 4⍴2⊃⎕VFI ScriptFollows ⍬ 
⍝ 1 2 3 4 
⍝ 5 6 7 8 
⍝ 9 10 11 12 
⍝ 13 14 15 16 
∇ 

缺点:数组的RHO需要注明independtly的数据,所以当你需要编辑的数据,你必须在两个地方编辑。除此之外,我必须说我真的爱上了这个ScriptFollows -Stuff ;-)

+0

这个故事还在继续;-)更多信息:http://www.dyalog.com/forum/viewtopic.php? F = 34&T = 880 – MBaas