無限リストによるエラトステネスのふるい でも書いたが Stream を使うと Elixir でも遅延評価な無限リス... 無限リストによるエラトステネスのふるい でも書いたが Stream を使うと Elixir でも遅延評価な無限リストを扱うことができる。その Stream にあるコンストラクタ関数の一つであるところの unfold/2 を使うと、再帰的に処理を行いながらアキュムレータに結果を積んでいく・・・というよくあるパターンを、無限リストとして実装できる。 カッとなって無限に FizzBuzz するストリームを書いてみた。 fizzbuzz = fn {true, true} -> "FizzBuzz" {true, false} -> "Fizz" {false, true} -> "Buzz" {false, false} -> nil end fst = Stream.unfold(1, fn(n) -> res = case fizzbuzz.({rem(n, 3) == 0, rem(n,
記事へのコメント0件
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています