Either<dynamic, A> catching<A>(Function0<A> thunk) { try { return right(thunk()); } catch(e) { return left(e); } }