RE: [Haskell-cafe] Function application like a Unix pipe

Udo Stenzel
The unix pipe is actually function composition. Its argument (standard input) isn't explicitly mentioned
Then it seems Unix must overload the "|" operator. I typically use it to do things like grep "." *.hs | wc So I think of the types as being grep "." *.hs :: String wc :: String -> Int -- ok, not really, but it shows the point better. So we'd have to have (|) :: a -> (a -> b) -> b And (flip ($)) is the only thing that makes sense. Is it the case that a Unix pipe is analagous to (flip ($)) or (flip (.)) depending on the context? Chad Scherrer Computational Mathematics Group Pacific Northwest National Laboratory "Time flies like an arrow; fruit flies like a banana." -- Groucho Marx

On Wed, Nov 23, 2005 at 09:01:07AM -0800, Scherrer, Chad wrote:
So I think of the types as being grep "." *.hs :: String wc :: String -> Int -- ok, not really, but it shows the point better.
Every unix program has a standard input, even if it doesn't use it, so I would rather give this type to grep "." *.hs: grep "." *.hs :: a -> String You can run something like this p | echo bla | grep "." *.hs | wc even if it seems non-sensical. Best regards Tomasz
participants (2)
-
Scherrer, Chad
-
Tomasz Zielonka