String 생성자를 사용하여 Text를 aeson Value에 패턴 일치 시키려고하는데 컴파일 오류가 발생했습니다. 다음 예제 프로그램은 제가 지금까지 실행 해 왔던 문제를 보여줍니다. 내가 아이손의 '문자열'값 생성자에 패턴 일치에 "여기"텍스트를 얻기 위해 노력하고 같이왜 Aeson은 패턴 일치 텍스트가 아닙니까?
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.Text
import qualified Data.Aeson
main = print $
case ("here" :: Data.Text.Text) of
(Data.Aeson.String x) -> "match"
_ -> "no match"
. 나는이 프로그램이 Aeson String과 Text를 일치시키고 "match"를 출력해야한다고 생각한다. 그러나 프로그램은 컴파일되지 않습니다. 대신 다음과 같은 오류 메시지가 나타납니다.
$ ghc scratch.hs
[1 of 1] Compiling Main (scratch.hs, scratch.o)
scratch.hs:9:4: error:
• Couldn't match expected type ‘Data.Text.Text’
with actual type ‘Data.Aeson.Value’
• In the pattern: Data.Aeson.String x
In a case alternative: (Data.Aeson.String x) -> "match"
In the second argument of ‘($)’, namely
‘case ("here" :: Data.Text.Text) of {
(Data.Aeson.String x) -> "match"
_ -> "no match" }’
실제 유형은 aeson 값이지만 반면에 예상되는 문자가 표시됩니다. 그러나 그것은 분명히 타입 주석 ("here":: Data.Text.Text)으로 표시된 텍스트입니다. 왜이 오류가 발생하는지 이해할 수 없습니다. 문자열 생성자를 통해 텍스트를 aeson 값에 패턴 일치시키는 작업이 this aeson tutorial에서 완료된 것으로 보입니다. 여기서는 내 예제에서 작동하지 않는 이유가 표시되지 않습니다.
실제로 유형 불일치가 있으며 튜토리얼과 동일한 작업을 수행하지 않는다고 확신합니다. 이유를 알아 보려면 'Data.Aeson.String x'의 유형을 고려하십시오. – duplode
튜토리얼에서는 어디에서 나타나는 것으로 보입니까? –