gpt4 book ai didi

smalltalk - 从 shell 中使用 Squeak

转载 作者:行者123 更新时间:2023-12-03 10:41:22 24 4
gpt4 key购买 nike

我可以将 Squeak 作为 REPL(无 GUI)启动,我可以在其中输入和评估 Smalltalk 表达式吗?我知道默认图像不允许这样做。是否有任何关于如何构建可以从命令行 shell 访问的最小镜像的文档?

最佳答案

这是一个(hackish)解决方案:
首先,您需要 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 的包。您可以使用 OSProcess thisOSProcess 访问 stdout AttachableFileStream (当前的过程,又名吱吱声)。

接下来,您在 userBackgroundPriority 运行一个无限循环(让其他进程运行)。在这个无限循环中,您使用 Compiler evaluate:执行输入。

你在一个带有 headless 图像的脚本中运行它。

关于smalltalk - 从 shell 中使用 Squeak,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3067563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com