단순한 사용자 지정 언어에 대해 하스켈에서 통역사를 작성하는 대규모 프로젝트의 일환으로이 기사를 쓰는 데 도움이되는 몇 가지 사항을 인쇄하려고합니다. .사용자 지정 데이터 형식의 목록에 매핑 표시
가 사용자 정의 데이터 형식을
data Prog = Prog [Func]
deriving (Show, Read)
을 그리고 내가이 함수의 마지막 줄이 음식물의 인스턴스를 인쇄 할 때
interpret :: Prog -> Vars -> String -> MaybeDebug -> IO()
interpret prog vars entry _ = do
putStrLn "The interpreter isn't written yet. Better get onto that!"
putStrLn "\n\n"
putStrLn (show prog)
putStrLn "\n\n"
putStrLn (show vars)
putStrLn "\n\n"
putStrLn (show entry)
putStrLn "\n\n"
putStrLn (map show [func | func <- prog, (func_name func) == entry])
내가 오류 메시지가 "일치 할 수 없습니다 예상 유형 'Char'와 실제 유형이 'String'인 경우
나는이 문제가 무엇인지 알아 내려고 노력하고 있습니다. 왜이 목록 이해가 기능 목록?
정말 고마워요. 그러나 현재 하스켈은 예상 유형 '[t0]'을 실제 유형 'Prog'과 일치시킬 수 없다고 불평합니다. 이것은 내가 맵 쇼를 도입하여 고쳐 졌다고 생각한 문제이지만, 그냥 마스킹 한 것처럼 보입니다. 이 곤경에 대해 똑같이 놀라 울 정도로 간단한 설명을하고 있습니까? – nebffa
가능한 수정 사항으로 업데이트되었습니다. –
어이 대단히 고마워.당신의 설명은 정말 분명합니다. 지금은 이해가됩니다. – nebffa