be open for extension, but closed for modification. • (参考訳:ソフトウェアの実体(クラス、モジュール、関数など)は、拡張に対して開 かれているべきであり、修正に対して閉じていなければならない) ↓ • 意訳:機能拡張が必要な場合に、既存のコードには修正を加えず に新しくコードを追加するだけで対応できるべきである
(並行・並列処理のパ ターン) • Julia では Channel で実現される • 拙著「9-1. タスクと チャネル」等参照 julia> function collatz_channel(n) Channel{Int}() do chnl put!(chnl, n) while n != 1 n = iseven(n) ? n ÷ 2 : 3n + 1 put!(chnl, n) end end end collatz_channel (generic function with 1 method) julia> collect(collatz_channel(27)) 112-element Vector{Int64}: 27 82 ⋮ 2 1