2017-05-07 156 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,也许我们可以在未来的版本中修正它(或也许有人会解释为什么它“不是一个错误,而是一个功能”;-)。