什么是 some
和 many
在 Control.Applicative.Alternative
好用吗?如果我写的东西像 some $ Just 42
貌似会造成无限递归,似乎不是很有用...。
它们作为解析器组合器使用时是有意义的。
some
意味着解析器被尽可能多次应用,但至少一次。
many
类似,但也允许不进行解析。return
摄取 []
在这种情况下,而不是失败。
在这种情况下 Maybe
, Just ...
从不 "失败",因此你的解析器 some $ Just 42
循环。