Я начал изучать 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