import Control.Arrow average = sum &&& length >>> uncurry (div) main = print $ average [1, 2, 5, 7, 10] このaverageはsumとlengthによってリストを2度横断するでおじゃる.これを1度の横断にしたいでおじゃる.sumとlengthはcatamorphismによって, と表せるでおじゃる.ただしでcatamorphismを表し,をで略記し,0を0を返す定数関数とし,をprojectionとし,2項演算子はcurryingされていないとするでおじゃる.を1つのcatamorphismに変形するでおじゃる. = = = = = = ここでFはcatamorphismのbase functorでおじゃる.従ってaverageは次のように書きなおせるでおじゃる. averag