The type of the last part of the expression is:many $ Just 1 :: Num a => Maybe [a]So in order to be able to return the “Just” constructor which inspected by the application of (take 3 <$>) we have somehow to know for sure that all the <*> executions will indeed see a “Just” in both of their arguments. This forces more and more evaluations.DoaitseOp 29 sep. 2016, om 22:28 heeft Jake <jake.waksbaum@gmail.com> het volgende geschreven:take 3 $ many $ Just 1
doesn't type check. Did you mean this?
take 3 <$> (many $ Just 1)I think this may have something to do with the default definition of many in the definition of Alternative:many :: f a -> f [a] many v = many_v where many_v = some_v <|> pure [] some_v = (fmap (:) v) <*> many_vmany_v and some_v are mutually recursive functions, and it may be that this prevents the thunks from being made available to take in some way. I'm really not sure though, this is just an idea about why this is not quite the same as (take $ repeat 1)______________________________On Thu, Sep 29, 2016 at 3:51 PM Corentin Dupont <corentin.dupont@gmail.com> wrote:It just loops, I understand why:If I try:Hi guys,I'm playing with the mysterious "some" and "many" from Control.Applicative.
many $ Just 1
http://stackoverflow.com/questions/18108608/what-are- alternatives-some-and-many- useful-for It seems that some and many are usually used in a context where something is consumed, and can be depleted, so the loop ends.But why doesn't this terminates?take 3 $ many $ Just 1______________________________It's a recursive call, but the construction of the result should be lazy..._________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell- cafe
Only members subscribed via the mailman list are allowed to post._________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell- cafe
Only members subscribed via the mailman list are allowed to post.