wholemeal programming というのは、データ型に対する演算を、
ある構造を受け取って別の構造へと変換する関数によって表現すること、
と捉えて間違いないでしょうか。


Thinking Functionally with Haskell という本に数独ソルバーを作る章があり、
そこで wholemeal programming が出てきました。

行のリストとして表現された9x9行列 type Matrix a = [[a]] に対して、
列のリストや、3x3小行列のリストを得る関数が定義されます。
その際、m :: Matrix a に対して m !! i !! j などとインデックス計算をして個々の要素を参照するのではなく、
行列を転置して列のリストを得たり、3要素ずつグループ化する関数などを合成して小行列リストを得たり、
そうやって構造そのものの形を変換しており、そのようなプログラミングスタイルが
wholemeal programming だと紹介されていました。


wholemeal programming というのは、このような構造変換だけでなく、
もっと広い意味を持っているのでしょうか。