2015-07-12 120 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