[Haskell-cafe] What is the role of $!?

PR Stanley prstanley at ntlworld.com
Sat Nov 17 23:04:34 EST 2007

okay, so $! is a bit like $ i.e. the equivalent of putting 
parentheses around the righthand expression. I'm still not sure of 
the difference between $ and $!. Maybe it's because I don't 
understand the meaning of "strict application". While we're on the 
subject, what's meant by Haskell being a non-strict language?
At 01:50 15/11/2007, you wrote:
>On 14 Nov 2007, at 4:32 PM, Shachaf Ben-Kiki wrote:
>>On Nov 14, 2007 4:27 PM, Justin Bailey <jgbailey at gmail.com> wrote:
>>>   f $! x = x `seq` f x
>>>That is, the argument to the right of $! is forced to evaluate, and
>>>then that value is passed to the function on the left. The function
>>>itself is not strictly evaluated (i.e., f x) I don't believe.
>>Unless you mean f -- which I still don't think would do much -- it
>>wouldn't make sense to evaluate (f x) strictly.
>Right.  (f x) evaluates f and then applies it to x.  (f $! x)
>evaluates x, evaluates f, and then applies f to x.
>Haskell-Cafe mailing list
>Haskell-Cafe at haskell.org

More information about the Haskell-Cafe mailing list