Я пытаюсь индуктивно определить пару экземпляров класса. То есть:
class Foo a b | a -> b where
foo :: a -> b
instance (not?)Foo a => Bar a b
foo x = ...
instance Foo a => Bar a b
foo x = ...
Первый экземпляр определяет базовое действие, а второй рекурсивно вызывает foo. Есть какой-либо способ сделать это? Хорошим примером может быть выравнивание списка, где в первом случае это функция идентификации, а во втором — рекурсивное применение concat.