Как уже неоднократно отмечалось в других местах (например, 1 , 2 , ...), сценарии в haskell могут быть довольно мощными.
Быстрый способ также может быть режим оценки выражения ghc . это то, что я на самом деле использую все больше и больше (мне действительно нравится эта функция в ruby).
Небольшой пример задачи:
«Найти все папки, содержащие git diffs между 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 для подобных маленьких скриптов!
Sidenote: Мастера командной строки-foo, вероятно, будут смеяться над этим, но я чувствую себя гораздо более комфортно, используя haskell, чем сценарии bash, так что это то, что я хочу использовать.