использовать операцию в sml (где находится текущая директория smlnj windows) - PullRequest
7 голосов
/ 18 марта 2011

Я никогда не использовал SML на машине с Windows (раньше на Unix-машине с emacs).

ради жизни я не могу найти текущий каталог в среде sml. Если я пытаюсь: использовать «filename.sml», это вызывает исключение .. Я не могу найти, где разместить мой файл ..

Кстати, файл написан на notepad ++ и просто называется с расширением .sml.

1 Ответ

9 голосов
/ 18 марта 2011

Текущий рабочий каталог будет откуда вы начинаете свой SML-интерпретатор. Если у вас есть ярлык на рабочем столе, то я бы предположил, что вы можете установить CWD в свойствах ярлыка (я не пользователь Windows), я бы предположил, что это, по умолчанию, это каталог, где у вас есть SML / NJ установлен.

Если вы запускаете интерпретатор sml из командной строки, то CWD - это каталог, в котором вы находились, когда запускали интерпретатор.

Вы можете заставить интерпретатор вывести его CWD с помощью следующей команды

OS.FileSys.getDir()

И вы также можете изменить CWD на другой рабочий каталог с помощью OS.FileSys.chDir .

Однако проще просто использовать абсолютные пути при попытке "загрузить" файлы sml с помощью use

Обновление .

Довольно просто: Вы можете сделать следующее

- OS.FileSys.chDir("/tmp"); (* Go to the tmp directory *)
val it = () : unit
- OS.FileSys.getDir();      (* Verify that we did go to the tmp directory *)
val it = "/tmp" : string  
- OS.FileSys.chDir("/home/jesper"); (* Go to my home directory *)
val it = () : unit
- OS.FileSys.getDir();              (* Verify where we did go. *)
val it = "/home/jesper" : string

В файловой системе Windows вам, очевидно, нужно выходить из-под контроля. Приведенный ниже код должен работать, но я не могу его протестировать, так как у меня нет окон.

OS.FileSys.chDir("C:\\Users\\username\\Desktop");

В комментарии, который вы написали, вы забыли покинуть два последних возврата.

...