Например, у меня есть следующий код:
data Tree = Branches (List Tree) | Node Int
sumTree : Tree -> Int
sumTree (Branches xs) = sum (map sumTree xs)
sumTree (Node x) = x
Если я хочу пройти проверку целостности, мне нужно расширить карту вручную:
data Tree = Branches (List Tree) | Node Int
sumTree : Tree -> Int
sumTree (Branches xs) = sum' xs where
sum' [] = 0
sum' (x::xs) = sumTree x + sum' xs
sumTree (Node x) = x
Что делает большую силу с функциональным программированием недоступной, если я хочу везде избегать assert_total. Есть ли способ обойти эту проблему?