저는 하스켈을 처음 접했고 newtype을 사용하여 무엇이 무엇인지 말할 수 있기를 원하지만 문자열에서 읽어야합니다. 나는Haskell 인스턴스가 단지 int 인 newtype을 읽었습니다.
newtype SpecialId Int
deriving (Eq, Ord, Show)
은 내가 newtype이란에서 읽기를 유도 그것이 단지 read "SpecialId 5" :: SpecialId
에서 작동 작동하지 않을 경우 read "5" :: SpecialId
할 수 있도록하려는있다. 나는
instance Read SpecialId where
readsPrec _ s = read s
을 시도했지만
-XDerivingStrategies
를 사용 GHC 8.2 이후이 나에게
SpecialId *** Exception: Prelude.read: no parse
Haskell에게'read'를 요구하고,'[(SpecialId, String)]'을 읽습니다. 이것은''[ ''char로 시작하지 않기 때문에 실패합니다. –
새 유형을 정의하는 구문이 잘못되었습니다. newtype SpecialId = SpecialId Int derived (Eq, Ord, Show)이어야합니다. – chepner