功能我一直在寻找写在Haskell词法分析器的意思,我偶然发现了这些功能。什么是定义为“一些”与“多”的哈斯克尔替代
如果定义,一些和许多应该是 方程的解最小:
some v = (:) <$> v <*> many v
many v = some v <|> pure []
我得到了(:)在一些被取消,应用于v的值,以便将其前置到以'many v'返回的列表中。但为什么许多人的定义从一些开始?为什么它会与纯粹的[]结合在一起?这两个功能之间的关系或区别是什么?对于一些和许多人来说,这些方程式的最小解决方案意味着什么?递归如何停止?帮帮我!
它没有得到* *串联用'纯[]'。空列表是递归停止的*替代*。 – Bergi
“一些”意味着“至少一个”,而“多”意味着“无一个或多个”。 – Bergi
啊哈谢谢。我认为这开始有意义。所以有些保证至少有一个值,接着是0或更多,并且许多会给你至少一个值(加上0或更多)*或*什么也没有。但递归到底如何呢? v的值如何消耗? – northlane