Запуск GAP-скриптов из командной строки

Я хотел бы понять поведение GAP при запуске сценария из командной строки, например

$ gap mytest.gap

в отличие от вызова изнутри GAP

gap> Read("mytest.gap");

В частности, я пытался подавить автоматическое форматирование с помощью разрывов строк и отступов. Если файл 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] только с документацией о том, как обрабатываются варианты.

1 ответ

Решение

Я боюсь, что в настоящее время невозможно полностью отключить форматирование вывода Print как ты пытался.

Однако вы можете обойти эту проблему, используя более новые потоковые API и PrintTo, как это:

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

Я зарегистрировал это как ошибку в системе отслеживания проблем GAP, и, возможно, мы сможем исправить это в следующем выпуске (или, возможно, кто-то объяснит, почему это "не ошибка, а функция";-).

Другие вопросы по тегам