使用因子源树之外的代码

时间:2012-02-15 14:58:26

标签: path factor-lang

我正在努力开始玩因素。

到目前为止,我已经:

  • 下载了OSX磁盘映像
  • 将因子目录复制到$INSTALL/factor
  • 通过运行$INSTALL/factor/factor
  • 启动调试程序

这似乎运行得很好。

关注the instructions for writing your first factor program后,我注意到scaffold-vocab目录中生成了$INSTALL/factor/work个文件。我现在可以使用它,但总的来说,我喜欢保留一个单独的$INSTALL目录树和$CODE目录树。

所以我试图按照"Working with code outside of the Factor directory tree" documentation中的说明将其他目录添加到用于将代码加载到factor可执行文件的路径中,但我没有太多运气。

首先,我尝试设置FACTOR_ROOTS环境变量:

% export FACTOR_ROOTS=.:$CODE/Factor:$INSTALL/factor
% $INSTALL/factor/factor
( scratchpad ) "work" resource-path .
"/usr/local/src/factor/work"
( scratchpad ) ^D

然后,我尝试创建~/.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

然后我检查了它是否应该是./.factor-roots

% mv ~/.factor-roots .
% $INSTALL/factor/factor
( scratchpad ) "work" resource-path .
"/usr/local/src/factor/work"
( scratchpad ) ^D

最后,我尝试手动添加它:

% $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

似乎我在这里缺少一些基本的东西。

如何在$INSTALL/factor目录树之外编写代码并在因子中使用它?如何告诉scaffold-vocab$CODE/Factor目录中构建脚手架?

1 个答案:

答案 0 :(得分:4)

好的,由于slava and erg on #concatenative的认真帮助,我能够弄清楚我做错了什么。

简而言之,resource-path不是测试因子根源的方法。就像文档说它“解决相对于因子源代码位置的路径。”

更有效的测试只是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