Now, even the shared_ptr in the immutable accumulator is const
Update
fmap now supports a return type that differs from the input type