The Scala code here starts with one Functor (BitSet) and returns a different Functor (Set), depending on the type of the function (in this case, Int => String). If the function had type (Int => Int), it would still return a BitSet.
The signature for fmap does not encode this flexibility.
Comments
That doesn't capture the type of the original example.
The Scala code here starts with one Functor (BitSet) and returns a different Functor (Set), depending on the type of the function (in this case, Int => String). If the function had type (Int => Int), it would still return a BitSet.The signature for fmap does not encode this flexibility.
Thanks for explaining. I now understand what the OP meant by "automatic conversions".