Popularity
3.6
Stable
Activity
0.0
Stable
6
2
2
Monthly Downloads: 24
Programming language: Haskell
License: BSD 2-clause "Simplified" License
Latest version: v0.3.1.0
Add another 'command' Package
README
command-qq
>>> import System.Command.QQ
>>> putStr =<< unlines . reverse . lines <$> [sh|cowsay "Hello, I am command-qq!"|]
|| ||
||----w |
(__)\ )\/\
\ (oo)\_______
\ ^__^
-------------------------
< Hello, I am command-qq! >
_________________________
Install
% cabal install command-qq
Features
Quasiquotation syntax for external interpreters
>>> [sh_| echo hello world! |]
hello world!
Custom quasiquoters
ghci = quoter $ callCommand "ghc" ["-ignore-dot-ghci", "-e"]
Then you can use ghci
in ghci!
>>> [ghci| putStrLn "hello world!" |] :: IO ()
hello world!
For more examples, see System.Command.QQ.Predef
Haskell values embedding
Let's define Embed
instance for a custom data type:
data Bang = Bang
instance Embed Bang where
embed Bang = "!"
Then you can use variables of Bang
type in quoted strings!
>>> [sh_| echo hello#{Bang} |]
hello!
>>> let bang = Bang in [sh_| echo hello#{bang} |]
hello!
Note, command-qq
does not support full Haskell in embeddings,
only variables/constructors names and literals