[Haskell-cafe] |> vs. $ (was: request for code review)
Brian Hulley
brianh at metamilk.com
Mon Mar 6 15:43:41 EST 2006
Shannon -jj Behrens wrote:
> I find "ctx |> currTok |> tokenType" to be more readable than
> "tokenType $ currTok $ ctx" because you're not reading the code in
> reverse. That's my primary complaint with "." and "$". That's
> especially the case when I'm spreading the code over multiple lines:
>
> -- Translate a C type declaration into English.
> translate :: String -> String
> translate s =
> s |>
> createParseContext |>
> readToFirstIdentifier |>
> dealWithDeclarator |>
> consolidateOutput
>
If you were wanting to be able to deal with exceptions/ errors etc during
the translation process, you'd usually use a monad (Haskell's version of a
pipe), in which case the operations could still be read left to right eg:
translate :: (Monad m) => String -> m String
translate = do
createParseContext
readToFirstIdentifier
dealWithDeclarator
consolidateOutput
So while . and $ are useful for combining functions together in parts of a
program, and are consistent with the idea that the function always comes
first followed by its argument, the top level (at least) would usually be
monadic and hence not require |> to get left-to-right readability. I've
copied the links on monads below from a previous post by Jared:
http://www.nomaware.com/monads/html/
http://haskell.org/hawiki/Monad
Regards, Brian.
More information about the Haskell-Cafe
mailing list