Given a class Foo:
> class Foo f where
> bar :: f -> Bool
> baz :: f -> Char -> Int
does the record type Foo'
> data Foo' = Foo' {
> bar' :: Bool,
> baz' :: Char -> Int
> }
>
> instance Foo Foo' where
> bar = bar'
> baz = baz'
where the fields of the record Foo' are just implementations of the functions of Foo have any special name?
In some sense it's a canonical instance of Foo; we could trivially write a universal
> toFoo' :: Foo f => f -> Foo'
function.
I ran across this pattern and wondered whether it was useful enough to have received a name. It vaguely resembles a typeclass dictionary or a vtable in an OOP language.
--Eric