Como se menciona varias veces en otros lugares (por ejemplo, 1, 2, ...) el scripting en haskell puede ser bastante poderoso.
Una forma rápida también puede ser ghc expression evaluation mode. esto es lo que realmente me encuentro usando más y más (realmente me gusta esta característica en ruby).
Una pequeña tarea ejemplo:
"encuentra todas las carpetas que contenían diffs git entre la cabeza y una revisión específica"Modo de evaluación de expresiones en haskell para scripting
git diff --stat 9e2b68 | ghc -e \
"getContents >>= return.(Data.List.nub).map(fst.break('/'==).head.words).lines"
Esto parece un poco torpe, probablemente porque no se sabe muy bien los detalles de usar ghc -e
.
Dado que toda la parte interesante es solo la nub.map(fst.break('/'==).head.words).lines
, la expresión real parece un poco prolija.
- ¿Cómo le digo a ghc sobre los módulos que necesito usar para no tener que calificarlos usando el nombre completo?
- ¿Puedo hacer que ghc recoja algún tipo de archivo de configuración que contenga módulos que utilizo con frecuencia?
¡Realmente apreciaría ver algunos ejemplos de otros usos que me ayudarán a mejorar la forma en que uso haskell para ese tipo de pequeños guiones!
Nota: Los asistentes de Commandline-foo probablemente se reirán de esto, pero me siento mucho más cómodo utilizando haskell y bash scripting, así que esto es lo que quiero usar.
Para cadenas → Funciones de cadenas Encuentro 'interact' para ser un poco menos torpe:' ghc -e "interactuar $ String func>" '. Con frecuencia, esto termina como 'ghc -e" interact $ unlines. Map ( String func>). Lines "'. –
Nefrubyr
Como fan de ambos git y Haskell, que no es mucho un "asistente de línea de comandos", ¡una publicación de blog en la que enumeraría un montón de sus guiones de Haskell relacionados con git definitivamente me interesaría! – MatrixFrog
@MatrixFrog No se limita a git, pero tal vez aún te resulte interesante: [Creación de scripts con el modo de evaluación de GHC] (http://blog.coldflake.com/post/12412650749/scripting-with-ghcs-evaluation-mode) – oliver