[Haskell-cafe] Re: wanted: haskell one-liners (in the perl
senseof one-liners)
Claus Reinke
claus.reinke at talk21.com
Sun Mar 4 18:45:28 EST 2007
>I think I could have most of the oneliner goodness of h4sh, without having to do
>the module install, if I could figure out a way to include modules with ghc -e.
i confess myself to be among those who underappreciated ghc -e, until this thread:)
as Joachim said (thanks for starting this, btw;-), we can use qualified names
$ echo hello world | hmap 'map Char.toUpper'
HELLO WORLD
and to get at your other methods, the question is not how to include modules
with ghc -e; instead, recall that ghc -e supplies a command to be evaluated
within the context of its parameter module (single input for a ghci session):
$ cat Imports.hs
import Debug.Trace
helper x = trace "hi there" (x+1)
$ ghc -e 'helper 41' Imports.hs
hi there
42
as to the original question in this thread, my .bashrc now also has a few less
symmetric entries:
function hrunl { ghc -e "interact(show.($*).lines)"; }
function hrunw { ghc -e "interact(show.($*).words)"; }
function hrunwl { ghc -e "interact(show.($*).map words.lines)"; }
using which the one-liner becomes something like
find -maxdepth 1 -type f | xargs du | hrunwl "sum . map (read . head)"
(the find/du is better left in shell tool land, it seems, and default Num is Integer)
hth,
claus
More information about the Haskell-Cafe
mailing list