Life Goes On

まあまあだけど楽しんでる方です

詳細設計書

ネタ元:詳しすぎる詳細設計書 - SiroKuro Page
自分だったらこんな風に書きたかったりするので、やっぱりまだ詳細設計書が邪魔だと思いました。:p
あ、詳細設計書なんて要らんだろ、という話には激しく同意です。

import Control.Arrow
import Data.List

data Sex = Man | Woman deriving (Eq, Show)
type Height = Double
data Person = P {sex :: Sex, height :: Height}

main = print $ calc [P Man 50, P Woman 40, P Woman 50, P Man 70, P Man 90]

calc :: [Person] -> Height
calc = uncurry (-) . (avg *** avg) . partition ((== Man) . sex)

avg :: [Person] -> Height
avg = uncurry (/) . (sum . map height &&& toEnum . length)