I have a data type:
data Box a b = Box a b
I want to create a Foldable
instance of Box
and since the Foldable
instance has to be given something of kind * -> *
, I'll declare the instance as:
instance Foldable (Box a) where
foldr f x (Box r s) = undefined
Now I can only do something like:
foldr f x (Box r s) = f s x
in the definition of foldr
but what if instead of operating on s
, I want to to something like:
foldr f x (Box r s) = f r x
The compiler doesn't let me do this so what is the proper way to go about it?