State<S, A> flatten<S, A>(State<S, State<S, A>> fa) => State((sa) { final next = fa(sa); return next.first(next.second); });