数時間前、私は GHC HEAD を構築して、新しい光沢のある閉じた型ファミリを実験しました。
{-# LANGUAGE TypeFamilies, MultiParamTypeClasses, FlexibleInstances #-}
type family C a b where
C a [a] = [a]
C a a = [a]
今、私はC
使用しようとしています:
class Combine a b where
combine :: a -> b -> C a b
instance Combine a [a] where
combine a b = a : b
instance Combine a a where
combine a b = [a, b]
次のエラーが発生します。
Couldn't match expected type ‛C a a’ with actual type ‛[a]’
...
In the expression: [a, b]
In an equation for ‛combine’: combine a b = [a, b]
In the instance declaration for ‛Combine a a’
2 番目の方程式は最初の方程式とは離れているように思えます (何があって[a] a
も に単純化することはできません)。a a
a