Have identity-monad wrap data
Define maybe-from
Define catamorphic matching