Режим оценки выражений в haskell для сценариев

Как неоднократно отмечалось в других местах (например, 1 , 2 , ...) сценарии в haskell могут быть довольно мощными .
Быстрым способом также может быть режим оценки выражения ghc . это то, что я использую все чаще и чаще (мне очень нравится эта функция в Ruby).
Небольшой пример задачи:
«Выяснить все папки, содержащие git-различия между HEAD и конкретной ревизией»

git diff --stat 9e2b68 | ghc -e \
  "getContents >>= return.(Data.List.nub).map(fst.break('/'==).head.words).lines"

Это выглядит немного неуклюже, вероятно, потому что Я действительно не знаю деталей использования ghc -e .
Учитывая, что все самое интересное - это просто nub.map (fst.break ('/' ==). Head.words) .lines , фактическое выражение кажется немного многословный.

  • Как мне сообщить ghc о модулях, которые мне нужно использовать, чтобы мне не нужно было квалифицировать их, используя полное имя?
  • Могу ли я заставить ghc выбрать какой-нибудь файл конфигурации, содержащий модули, которые я часто использую?

Я был бы очень признателен, если бы увидел несколько примеров из других сценариев использования, которые помогут мне улучшить то, как я использую haskell для таких типов маленькие скрипты!

Замечание: мастера Commandline-foo, вероятно, посмеются над этим, но мне гораздо удобнее использовать haskell, чем сценарии bash, так что это то, что я хочу использовать.

15
задан oliver 27 October 2011 в 23:49
поделиться