2017-05-07 1 views
1

Ich mag würde GAP Verhalten verstehen, wenn ich ein Skript von der Kommandozeile starten, zum BeispielStarten GAP-Skripte von der Kommandozeile

$ gap mytest.gap 

im Gegensatz von innen GAP

gap> Read("mytest.gap"); 
zu rufen

Insbesondere habe ich versucht, suppress automatic formatting mit Zeilenumbrüchen und Einrückung. Wenn die Datei mytest.gap Folgendes ist

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

dann bekomme ich das erwartete Verhalten, wenn es mit Read() Aufruf, nämlich

[ 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 ] 

während es von der Kommandozeile zu starten, bekomme ich immer noch

[ 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 ] 

Kann jemand bitte eine Erklärung für dieses Verhalten geben? Ist GAPs Behandlung von Skripten, die von einem Kommandozeilenaufruf gestartet wurden, irgendwo dokumentiert? Ich konnte es im Handbuch nicht finden, aber die Manpage sagt usage: gap [OPTIONS] [FILES] mit Dokumentation nur, wie die Optionen behandelt werden.

Antwort

3

Ich befürchte, dass es derzeit nicht möglich ist, die Ausgabeformatierung von Print vollständig zu deaktivieren, wie Sie es versucht haben.

Allerdings können Sie das Problem umgehen, indem Sie die aktuelle Stream-APIs und PrintTo, wie folgt aus:

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

ich das als bug in the GAP issue tracker angemeldet, und vielleicht können wir es in der nächsten Version beheben (oder vielleicht erklärt jemand, warum es "kein Fehler, sondern ein Feature" ist ;-).

Verwandte Themen