再帰型は使ってますが関数の再帰定義は一切ございません

pythagoras = y f

data Rec a = In { out :: Rec a -> a }

y = \f -> (\x -> f (out x x)) (In (\x -> f (out x x)))

f g n = if n == 0 then 0 else n + g (n - 1)