public Obj append(Obj o) { if (!ZERO_OBJ.equals(o)) return new Obj(Collections.<Prop, List>concat(props, o.getProps())); else return o; }
public Arr append(Arr a) { if (!ZERO_ARR.equals(a)) return new Arr(Collections.<Val, List>concat(vals, a.getVals())); else return a; }
@Override public <X extends A> ListMonadic<A> cons(X a) { return mlist(Collections.<A, List> concat(Collections.<A> list(a), Collections.<A> list(as))); }