2017-05-07 211 views
1

我想了解GAP的行爲,當我在命令行啓動腳本,例如啓動GAP腳本

$ gap mytest.gap 

從裏面GAP

gap> Read("mytest.gap"); 
反對叫它

特別是,我試圖suppress automatic formatting換行符和縮進。如果文件mytest.gap是以下

SetPrintFormattingStatus("*stdout*", false); 
Print(Primes{[1..30]}, "\n"); 

然後我得到Read()調用它的時候,即

[ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113 ] 

,而在命令行啓動它預期的行爲,我仍然得到

[ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 
    73, 79, 83, 89, 97, 101, 103, 107, 109, 113 ] 

有人可以爲這種行爲提供解釋嗎? GAP是否對從命令行調用中啓動的腳本進行了處理?我無法在手冊中找到它,但手冊頁確實只提供usage: gap [OPTIONS] [FILES]的文檔說明了如何處理這些選項。

回答

3

恐怕目前不可能完全禁用您嘗試的方式輸出格式Print

但是,您可以解決該問題通過使用新的流API和PrintTo,像這樣:

s:=OutputTextUser(); 
SetPrintFormattingStatus(s, false); 
PrintTo(s, Primes{[1..30]}, "\n"); 

我登錄以此爲bug in the GAP issue tracker,也許我們可以在未來的版本中修正它(或也許有人會解釋爲什麼它「不是一個錯誤,而是一個功能」;-)。