       asTree = (s) -> s.reduceLeft Empty, (a, b) -> a.before b
       asSeq  = (s) -> s.reduceRight ((a, b) -> Sequence.conj a, -> b), null
 
-      constructor: (@l, m, @r) -> @m = -> val = m(); (@m = -> val)()
+      constructor: (@l, @m, @r) ->
 
       isEmpty: -> false
 

          if m() == Empty
            asTree r
          else
            new Deep m().first().asDigit(), (=> m().rest()), r
        else
          new Deep l, m, r


            [l, x, r] = @r.split p, i2
            [deepR(@l, suspend(=> @m()), l), x, asTree(r)]

      reverse: -> new Deep @r.reverse(), suspend(=> @m().reverse()), @l.reverse()

    internal = [
      Node2
