注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
パーサコンビネータなんかでよく使う、 some と many という関数があります。それぞれ引数を1回以上/0... パーサコンビネータなんかでよく使う、 some と many という関数があります。それぞれ引数を1回以上/0回以上実行して結果のリストを返す関数で、これの単純な定義は some v = (:) <$> v <*> many v many v = some v <|> pure [] となります。 some は v : (many v) 、 many は some v または [] を返すイメージです。 パーサコンビネータでは、例えば英数字1文字以上の文字列をパースしたいとき some alphaNum と書いたりします。 面白いのは、一見とても自明に思えるこの定義は、遅延評価がないと無限ループしてしまう点です。 本当は v が失敗したら some v 自体が失敗してほしいところが、v が失敗するか否かに関わらず many v が実行されてしまいます。正格評価の気持ちで考えるとあたりまえで
2021/08/30 リンク