code: function(root, childrenFunc) {
    if (!(this instanceof RoseTree)) {
      return new RoseTree(root, childrenFunc);
    }
    this.root = root;
    this._children = childrenFunc ? new Thunk(childrenFunc) : emptyThunk;
  }
docs: Constructor. Takes root value and a zero-argument function to call to produce the children. If childrenFunc is not provided, the root has no children. data RoseTree a = RoseTree a (RoseTree a)