我正在尝试开始使用因子。
到目前为止,我已经:
$INSTALL/factor$INSTALL/factor/factor这似乎运行良好。
按照编写第一个因子程序的说明,我注意到scaffold-vocab在我的$INSTALL/factor/work目录中生成了文件。我现在可以使用它,但总的来说,我喜欢保留一个单独的$INSTALL目录树和$CODE目录树。
所以我试图按照“使用因子目录树之外的代码”文档中的说明将其他目录添加到用于将代码加载到factor可执行文件的路径中,但我运气不佳。
首先,我尝试设置一个FACTOR_ROOTS环境变量:
% export FACTOR_ROOTS=.:$CODE/Factor:$INSTALL/factor
% $INSTALL/factor/factor
( scratchpad ) "work" resource-path .
"/usr/local/src/factor/work"
( scratchpad ) ^D
Run Code Online (Sandbox Code Playgroud)
然后,我尝试创建一个~/.factor-roots文件
% echo . > ~/.factor-roots
% echo $CODE/Factor >> ~/.factor-roots
% echo $INSTALL/factor >> ~/.factor-roots
% $INSTALL/factor/factor
( scratchpad ) "work" resource-path .
"/usr/local/src/factor/work"
( scratchpad ) ^D
Run Code Online (Sandbox Code Playgroud)
然后我检查了它是否应该./.factor-roots改为:
% mv ~/.factor-roots .
% $INSTALL/factor/factor
( scratchpad ) "work" resource-path .
"/usr/local/src/factor/work"
( scratchpad ) ^D
Run Code Online (Sandbox Code Playgroud)
最后,我尝试手动添加它:
% $INSTALL/factor/factor
( scratchpad ) "." add-vocab-root
( scratchpad ) "$CODE/Factor" add-vocab-root ! no, I didn't actually use an environment variable here :)
( scratchpad ) "work" resource-path .
"/usr/local/src/factor/work"
( scratchpad ) ^D
Run Code Online (Sandbox Code Playgroud)
看来我在这里遗漏了一些基本的东西。
如何在$INSTALL/factor目录树之外编写代码并在因子中使用它?我怎么知道scaffold-vocab在我的$CODE/Factor目录中构建脚手架?
好的,感谢slava 和 erg 在 #concatenative 上的认真帮助,我能够弄清楚我做错了什么。
简而言之,resource-path这不是一种测试因子根的方法。就像文档说的那样,它“解析 [s] 相对于 Factor 源代码位置的路径。”
一个更有效的测试很简单vocab-roots get,它将获取当前的词根列表。
"/path/to/wherever" add-vocab-root将添加/path/to/wherever到您的词根列表中,并允许您这样做"/path/to/wherever" "project" scaffold-vocab,您可以在所需的位置构建脚手架。
正如尔格所说:
我通常会说另一个词,比如
: scaffold-games ( vocab -- ) [ "/home/erg/games" ] dip scaffold-vocab ;"minesweeper" scaffold-games
| 归档时间: |
|
| 查看次数: |
312 次 |
| 最近记录: |