Вот (хакерское) решение:
Во-первых, вам нужен OSProcess, поэтому запустите его в рабочей области:
Gofer new squeaksource:'OSProcess'; package:'OSProcess';load.
Затем поместите это в файл repl.st:
.
OSProcess thisOSProcess stdOut
nextPutAll: 'Welcome to the simple Smalltalk REPL';
nextPut: Character lf; nextPut: $>; flush.
[ |input|
[ input := OSProcess readFromStdIn.
input size > 0 ifTrue: [
OSProcess thisOSProcess stdOut
nextPutAll: ((Compiler evaluate: input) asString;
nextPut: Character lf; nextPut: $>; flush
]
] repeat.
]forkAt: (Processor userBackgroundPriority)
И, наконец, выполните эту команду:
squeak -headless path/to/squeak.image /absolute/path/to/repl.st
Теперь вы можете повеселиться с Smalltalk REPL. Не забудьте набрать в команде:
Smalltalk snapshot:true andQuit:true
если вы хотите сохранить изменения.
Теперь перейдем к объяснению этого решения:
OSProcess - это пакет, который позволяет запускать другие процессы, читать из stdin и записывать в stdout и stderr. Вы можете получить доступ к stdout AttachableFileStream с помощью OSProcess thisOSProcess
(текущий процесс, он же писк).
Далее вы запускаете бесконечный цикл в userBackgroundPriority (чтобы позволить другим процессам запускаться). В этом бесконечном цикле вы используете Compiler evaluate:
для выполнения ввода.
И вы запускаете это в сценарии с изображением без головы.