

An upgrade to attoparsec, Haskell parsing library: more speed, more power - jcurbo
http://www.serpentine.com/blog/2014/05/31/attoparsec/

======
ckw
"When I was compiling the list of significant packages using attoparsec, I
made a guess that the Unix rev would reverse the order of lines in a file.
What it does instead seems much less useful: it reverses the bytes on each
line."

    
    
      tac (1) - concatenate and print files in reverse

~~~
_delirium
Unfortunately, tac isn't cross-platform. On systems with GNU userland, you can
indeed use 'tac', but that isn't available on BSDish systems (including
FreeBSD and Mac OS X), where 'tail -r' is what you want instead. And likewise,
'tail -r' doesn't work on systems with a GNU userland, because the tail in GNU
coreutils doesn't implement -r (according to the maintainers, because
reversing the order of lines in a file is completely out of scope for what
'tail' is supposed to do). I don't believe anything in POSIX will do this
cross-platform in a straightforward way, because neither 'tac' nor the '-r'
option of tail are in POSIX. That leaves you with the options: platform-
testing if/thens, or rolling your own in an awk/etc. one-liner.

~~~
joeyh
ghc -e 'interact $ unlines . map reverse . lines'

~~~
dbaupp
Isn't that `rev`, not `tac`? (I think `tac` should be `unlines . reverse .
lines`.)

~~~
wyager
You are correct.

For those not familiar with Haskell,

    
    
        unlines . map reverse . lines
    

is the same thing as (python)

    
    
        lambda data : [line[::-1] for line in data]
    

whereas

    
    
        unlines . reverse. lines
    

is the same as

    
    
        lambda data : [line for line in data][::-1]

~~~
dbaupp
Well, you need

    
    
       '\n'.join(...)
    

for the "unlines" bit.

------
tel
Worth noting, this post was accidentally published. This release may still be
baking.

~~~
bos
Nope, I pushed the release this morning once I realised that someone had
actually noticed the post during the five minutes it was live at 1am.

~~~
tel
Ah, good to know!

