Работа с кодом за пределами исходного дерева фактора - PullRequest
4 голосов
/ 15 февраля 2012

Я пытаюсь начать играть с фактором.

Пока что я:

  • скачал образ диска OSX
  • скопировал факторкаталог в $INSTALL/factor
  • запустил отладчик, запустив $INSTALL/factor/factor

, который, кажется, работает отлично.

Следуя инструкциям по написаниюВаша первая программа-фактор , я заметил, что scaffold-vocab генерирует файлы в моем каталоге $INSTALL/factor/work.Что я могу использовать сейчас, но в целом, мне нравится хранить отдельные $INSTALL дерево каталогов и $CODE дерево каталогов.

Так что я пытаюсь следовать инструкциям Документация «Работа с кодом вне дерева каталогов Factor» для добавления других каталогов к пути, используемому для загрузки кода в исполняемый файл 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 Ответ

4 голосов
/ 16 февраля 2012

Хорошо, я смог понять, что я делаю неправильно, благодаря серьезной помощи slava и erg на # concatenative .

Проще говоря, resource-path не способ проверить ваши корни факторов. Как говорят в документах, он «разрешает [s] путь относительно местоположения исходного кода фактора».

Более эффективным тестом является просто 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

...