주어진 :
data Foo =
FooString String
…
class Fooable a where --(is this a good way to name this?)
toFoo :: a -> Foo
다음 String
의 인스턴스 를 만들고 싶습니다 Fooable
.
instance Fooable String where
toFoo = FooString
GHC는 다음과 같이 불평합니다.
Illegal instance declaration for `Fooable String'
(All instance types must be of the form (T t1 ... tn)
where T is not a synonym.
Use -XTypeSynonymInstances if you want to disable this.)
In the instance declaration for `Fooable String'
대신 사용하면 [Char]
:
instance Fooable [Char] where
toFoo = FooString
GHC는 다음과 같이 불평합니다.
Illegal instance declaration for `Fooable [Char]'
(All instance types must be of the form (T a1 ... an)
where a1 ... an are type *variables*,
and each type variable appears at most once in the instance head.
Use -XFlexibleInstances if you want to disable this.)
In the instance declaration for `Fooable [Char]'
질문 :
- String 및 typeclass의 인스턴스를 만들 수없는 이유는 무엇입니까?
- 추가 플래그를 추가하면 GHC가 기꺼이이 문제를 해결해 줄 것 같습니다. 이것이 좋은 생각입니까?