Я начал изучать Haskell и для этого установил платформу Haskell для Windows. Я использую WinGHCi
на данный момент. Я узнал, что у него есть команда :cd
, которая используется для смены каталога. Но вопрос в том, как я узнаю, в каком каталоге я сейчас нахожусь? Не зная этого, зачем мне менять каталог. Я много искал, но не мог найти ответ.
Скажите, пожалуйста, есть ли способ узнать текущий рабочий каталог. Предпочтительно, я хотел бы настроить саму командную строку для отображения текущего каталога, почти как консоль Linux.
Следуя предложению @Daniel, я сделал следующее:
- Поскольку я работал на Windows 7, файла
.ghci
нет (думаю, это для Unix-подобных ОС), поэтому я создал файлghci.conf
в папкеC:\Users\Apelles\AppData\Roaming\ghc
, как это указано здесь. - Скопируйте сценарий из ответа Даниэля на
ghci.conf
. - Затем я запустил
ghci.exe
, окно, похожее на консоль. Я заметил, что он загрузил несколько модулей больше, чем обычно загружал раньше. Вот снимок:
Как вы можете видеть, он загружает больше модулей, и последняя строка говорит:
Не удается разобрать строку приглашения. Используйте синтаксис Haskell.
Что это значит? Какая строка вызывает проблему (из следующего скрипта)?
let cur fill = do { cwd <- System.Directory.getCurrentDirectory; return (":set prompt \"" ++ cwd ++ fill ++ " \""); }
:def doprompt (\_ -> cur ">")
:def mycd (\dir -> System.Directory.setCurrentDirectory dir >> cur ">")
:doprompt
Кроме того, если я переименую файл ghci.conf
в произвольное имя, а затем запущу ghci.exe
, он загрузит эти модули:
Как я уже говорил, он загружает меньше модулей, а это означает, что с ghci.conf ghci.exe
что-то делает успешно, но в какой-то момент происходит сбой. Как это исправить?
Prelude> :! pwd
(или любой другой эквивалент pwd в Windows). Я думаю, что под WinGHCi работает обычный ghci, так что это должно работать. - person Daniel Fischer   schedule 28.06.2012:set prompt Whatever
(введите:?
для краткой справки по командам ghci). Однако это за сеанс. Чтобы сделать его постоянным, сделайте это в своем файле.ghci
(кажется, в Windows они называются по-другому, не помню как). Однако я не уверен, как установить его в текущий каталог. - person Daniel Fischer   schedule 28.06.2012:set prompt Whatever
? Что я должен поставить вместоWhatever
, чтобы он показывал текущий рабочий каталог?:set prompt :!pwd
здесь не поможет. - person Nawaz   schedule 28.06.2012cd
без дополнительных аргументов выводит текущий каталог вместо его установки. - person MathematicalOrchid   schedule 30.06.2012cd
ни не печатает, ни устанавливает текущий каталог. Он скорее используется для изменения каталога (т.е. для навигации), отсюда и название cd. - person Nawaz   schedule 30.06.2012ghci.conf
, неудивительно, dot-ghci используетSystem.Directory
, поэтому необходимо загрузить пакетdirectory
и его зависимости. - person Daniel Fischer   schedule 30.06.2012System.Directory.getCurrentDirectory >>= print
? - person Daniel Fischer   schedule 30.06.2012:cd <absolute_directory_path>
поможет. и WinGHCi запускается с текущим каталогом, в котором установлен двоичный файл. Пожалуйста, дайте мне знать, если вы что-нибудь узнаете. Спасибо. - person Koushik Shetty   schedule 19.10.2013