> you often need additional constraints, e.g. <X : Hashable> or something
in haskell:
noConstraint :: List a -> (a -> b) -> List b
withConstraints :: (Hashable a, Frobable b) => List a -> (a -> b) -> List b
you still don't have to declare `a` and `b`, you're just adding a constraint on them.
(iirc in haskell types have to start with an uppercase character, which means you can use lowercase letters for type variables without extra apostrophes etc)
in haskell:
you still don't have to declare `a` and `b`, you're just adding a constraint on them.(iirc in haskell types have to start with an uppercase character, which means you can use lowercase letters for type variables without extra apostrophes etc)