三浦ノート

自分の経験したことを検索可能にしていくブログ.誰かの役に立ってくれれば嬉しいです.

関数型プログラミング

C#でStreamReaderでテキストファイルの行ごとのリストを生成する拡張メソッド(非同期版も)

C#(.net6.0)でStreamReaderで読み込んだテキストファイルの行ごとのEnumerableリストを生成する拡張メソッドStreamReader.ReadAllLinesを定義します。 public static IEnumerable<string> ReadAllLines(this StreamReader it) { string? line; while ((line = it.Rea</string>…

C#で生成メソッドを用いた無限リスト作成(非同期版も)

C#(.net6.0)でFunc<T>型の生成メソッドを使ってEnumerableの無限リストを作成するメソッドを定義します。 public static IEnumerable<T> Generate<T>(Func<T> supplier) { while (true) yield return supplier(); } 生成メソッドsupplierに非同期メソッドを使いたい場合</t></t></t></t>…

JavaのStreamAPIで素数列挙をする

目次 $ \sqrt{N} $までの自然数で試し割り $ \sqrt{N} $までの素数で試し割り エラトステネスの篩 速度比較 計算量・メモリ消費 JavaのStreamAPIを使って2から自然数Nまでの素数列挙をしてみます。 実装できたのは試し割りによる普通のアルゴリズムです。(…

Javaで末尾再帰最適化をする方法

StreamAPIを使えばjavaでも末尾再帰最適化(Tail-Call Optimization)ができるぞという本( Javaによる関数型プログラミング ―Java 8ラムダ式とStream | Venkat Subramaniam, 株式会社プログラミングシステム社 |本 | 通販 | Amazon 。英語版のpdfが無料でネッ…