Concurrent Clean : [quiz] リスト要素の正規化(2)

http://karetta.jp/article/blog/oneline/008668
それはそうと、これはやはり継続を使って解く方がいいと思うのですよね(schemeなので)。

maxInt =: 0x7fffffff

::Tree a = Node a [Tree a]

norm t = let ([[t2:_]:_],_) = norm_t t end maxInt in t2
  where
    end n = ([[],[]],n)
    norm_t (Node i ts) cont n = let ([ts2,ts3:tss4],m) = norm_ts ts cont (min i n)
                                in ([[Node (i/m) ts2:ts3]:tss4],m)
    norm_ts [] cont n = let (ts2,m) = cont n in ([[]:ts2],m)
    norm_ts [t:ts] cont n = norm_t t (norm_ts ts cont) n

t :: Tree Int
t = Node 9 [Node 15 [], Node 12 [Node 3 [], Node 15 []], Node 27 [Node 6 [Node 18 [], Node 15 []]]]

Start = norm t
      • -

ところで、解答例が出ていたのですが、
http://karetta.jp/article/blog/oneline/008676
2回たどっているような気がするのですが、それでいいんでしょうか?