In a *lot* of places in my programs, I am using notation f $ g $ h x in favour of f (g (h x)) (that's the '$' as defined in the Prelude: right-associating infix application operator) as it avoids parentheses, and makes the code more manageable (you can write "(upward) pipes" with one "$ f" per line, etc)
I liked to think of it as just a syntactical convention (for years ...) but is it really at no cost? It does introduce extra function calls, that is, extra closures etc.? Can these be removed by ghc's optimizer?
I don't think it's *just* a syntactic convention, but in your case above I think they both yield the same function graph for evaluation so I see no cost there.
Here's a little $-based idiom I rather like, which shows $ as more than just a no-op:
[[ -- |Apply list of functions to some value, returning list of results. -- It's kind of like an converse map. -- -- This is similar to the 'ap' function in the Monad library. -- flist :: [a->b] -> a -> [b] flist fs a = map ($ a) fs ]]
I suppose you could say that $ is a kind of syntactic convention, because without it juxtaposition for function application lacks the lexical visibility for expression in different syntactic contexts.
Or am I totally wrong here ... Actually, looking at the Prelude (now), there is '$!' as well - is that supposed to answer my question?
Well, that's a different function, I think.
#g
------------ Graham Klyne For email: http://www.ninebynine.org/#Contact
_______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell