[Haskell-cafe] Implicit Multi Threading in Switch Case
isaace71295 at gmail.com
Tue Jun 20 10:10:07 UTC 2017
Pattern matching clauses evaluate from left to right. You can get the
behavour you're after by swapping the arguments in the tuple:
case (stop, infi) of
(Just _, Nothing) -> 1
(_, _) -> 2
Evaluates to 2
On Tue, 20 Jun. 2017, 7:29 pm Yotam Ohad, <yotam2206 at gmail.com> wrote:
> After reading "Push-Pull Functional Reactive Programming
> I had an idea about deciding which, of two events, comes first. Instead of
> using forkIO, I tried something like the following:
> infi :: Maybe Int
> infi = infi
> stop :: Maybe Int
> stop = Nothing
> test :: Int
> test = case (infi, stop) of
> (Nothing, Just _) -> 1
> (_, _) -> 2
> Here, infi is an action that never ends, and stop a function that ends
> immediately. I thought that the compiler would see that stop evaluates
> immediately to Nothing and thus will return 2, but it tries to evaluate
> infi and get stuck.
> I think it happens because I am using a tuple to hold both values (but not
> really sure about it). Do you know a way to make this arrangement work?
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> Only members subscribed via the mailman list are allowed to post.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe