私はhaskellにレクサーを書きたいと考えていましたが、私はこれらの関数を見つけました。Haskell Alternativeの "some"関数と "many"関数の定義の意味は何ですか
定義され、いくつかの多くは 方程式の最小解すべきか:
some v = (:) <$> v <*> many v
many v = some v <|> pure []
私はいくつかの中(:)が解除されることを取得し、 vの値に適用され、それを 'many v'で返されたリストの先頭に追加します。しかし、なぜ多くの人の定義はいくつかで始まるのですか?そしてそれはなぜ純粋な[]と連結されるのでしょうか?これらの2つの機能の関係や違いは何ですか?これらの方程式の中で最も解けないのは、何人か、そして多くの人にとって、どういう意味ですか?そして再帰はどのように止まるでしょうか?助けて!
それは* '[]'純粋で*連結されません。空リストは、再帰が停止する*代替*です。 – Bergi
「some」は「少なくとも1つ」を意味し、「many」は「1つ以上」を意味する。 – Bergi
ありがとうございます。私はこれが理にかなっていると思います。したがって、少なくとも1つの値、0以上の値、および多くの場合、少なくとも1つの値(0以上の値)*または*が保証されます。しかし、再帰はどのくらい正確に終了しますか? vの値はどのように消費されますか? – northlane