What would you expect it to return? 5? In haskell, there's no function like this because haskell doesn't allow nested lists. You have to fake it using:

```haskell
-- tree is either an item or a list of trees
data Tree a = I a | T [Tree a]

tree :: Tree Int
tree = T [I 1, I 2, I 3, T [I 4, I 5, I 6], I 7, T [I 8]]
```

To me it's the expected result, because what "folding" does is replace cons and nil with the function and the constant value. So:

```scheme
(1 . (1 . (1 . nil)) . ((1 . nil) . nil) . nil)
;; becomes
(1 + (1 + (1 + 1)) + ((1 + 1) + 1) + 1) ;; => 8
```

The example isn't that great to show of some potential use, but I can't think of anything more interesting that's not the variation of something already there. Plus it sort of shows how the `-tree-reduce-from` differs from `-tree-reduce` (which would return 4) in a sense that the seed value is applied for each "layer" of the list.