[Haskell-cafe] How to understand `|` in this code snippet ?
zaxis
z_axis at 163.com
Sat Feb 27 21:34:58 EST 2010
thanks!
case timeout of
Just str ->
case reads str of
[(t,_)] -> addtimeout (hPutStrLn stderr "*** TIMEOUT" >> _exit 1)
_ -> return ()
_ -> return ()
is VERY clear!
Daniel Fischer-4 wrote:
>
> Am Sonntag 28 Februar 2010 02:08:18 schrieb zaxis:
>> Then can i change it to :
>> case timeout of
>> Just str -> do
>> [(t, _)] <- reads str
>> addTimeout t (hPutStrLn stderr "*** TIMEOUT" >> _exit 1)
>> return ()
>> _ -> return ()
>>
>> Sincerely!
>
> No. The "| [(t,_)] <- reads str" in
>
> case timeout of
> Just str | [(t,_)] <- reads str -> ...
>
> is a "pattern guard", not a monadic bind (and where "p <- reads str" is a
> monadic bind, it's in the list monad).
> You can change it to
>
> case timeout of
> Just str ->
> case reads str of
> [(t,_)] -> addtimeout (hPutStrLn stderr "*** TIMEOUT" >> _exit 1)
> _ -> return ()
> _ -> return ()
>
> but why would you?
>
>>
>> Brandon S. Allbery KF8NH wrote:
>> > On Feb 27, 2010, at 04:07 , zaxis wrote:
>> >> xxxMain = do
>> >> timeout <- getEnv "xxx_TIMEOUT"
>> >> case timeout of
>> >> Just str | [(t, _)] <- reads str -> do
>> >> addTimeout t (hPutStrLn stderr "*** TIMEOUT" >> _exit 1)
>> >> return ()
>> >> _ -> return ()
>> >> .......
>> >>
>> >> What does the `|` mean in "Just str | [(t, _)] <- reads str" ?
>> >> Is it a logical `or` ?
>> >
>> > It's a guard. Same as with function definitions (in fact, function
>> > definitions of that form are converted to case expressions).
>> >
>> > --
>> > brandon s. allbery [solaris,freebsd,perl,pugs,haskell]
>> > allbery at kf8nh.com system administrator [openafs,heimdal,too many hats]
>> > allbery at ece.cmu.edu electrical and computer engineering, carnegie
>> > mellon university KF8NH
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
-----
fac n = let { f = foldr (*) 1 [1..n] } in f
--
View this message in context: http://old.nabble.com/How-to-understand-%60%7C%60-in-this-code-snippet---tp27726581p27732673.html
Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.
More information about the Haskell-Cafe
mailing list