Как пройти проверку целостности при обходе рекурсивной структуры данных с помощью `map` - PullRequest
3 голосов
/ 29 апреля 2019

Например, у меня есть следующий код:

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. Есть ли способ обойти эту проблему?

...