1
나는 다음과 같은 데이터 유형이 있습니다목록
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE ExtendedDefaultRules #-}
class ToString a where
data M = forall a. (ToString a) => B a
가 GHCI에서 나는 문제없이 다음을 수행 할 수 있습니다
let bs = [B, B]
을하지만 수행하려고 할 경우 컴파일 된 파일에서 다음 오류가 발생합니다.
No instance for (ToString a0) arising from a use of ‘B’ The type variable ‘a0’ is ambiguous Relevant bindings include bs :: [a0 -> M] (bound at src/My/Module:7:1)
내가 누락 된 확장 프로그램은 그림과 같이 B
의 목록을 만들 수 있습니까? 또는 GHCI가 무엇을 놓치고 있습니까?
합니다. 이러한 GHC 언어 확장을 아는 것은 하나의 예술입니다 :-) – kurzweil4
@ kurzweil4 : 이제는 자신의 취향에 맞는 또 다른 (독점적 인) 하스켈 컴파일러를 사용하여 상상해보십시오. – Cactus
GHC가 말하고 싶습니다. "좋아, 우리는 하스켈이야."하고 끝내. 그런 다음 원하는만큼 많은 기능을 추가 할 수 있으며 일부 기존 표준에 제한되지 않습니다. 그런 다음, 그들은 "GHC Haskell"이라는 명세를 하스켈 (Haskell)로 발표 할 수 있으며, 다른 누군가가 컴파일러를 만들고자한다면, 스펙을 따라야합니다. 내가 아는 한, 그들은 유일한 (중요한) 게임이다. 아마도 이러한 모든 언어 pragma의 필요성을 제거 할 수 있습니까? – kurzweil4