function(root, childrenFunc) {
  if (!(this instanceof RoseTree)) {
    return new RoseTree(root, childrenFunc);
  }
  this.root = root;
  this._children = childrenFunc ? new Thunk(childrenFunc) : emptyThunk;
}
function(root, childrenFunc) {
  if (!(this instanceof RoseTree)) {
    return new RoseTree(root, childrenFunc);
  }
  this.root = root;
  this._children = childrenFunc ? new Thunk(childrenFunc) : emptyThunk;
}
function ( root , childrenFunc ) { if ( ! ( this instanceof RoseTree ) ) { return new RoseTree ( root , childrenFunc ) ; } this . root = root ; this . _children = childrenFunc ? new Thunk ( childrenFunc ) : emptyThunk ; }
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)
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 )