Как часть большого проекта в университете написать переводчика в Haskell для простого пользовательского языка, я пытаюсь напечатать некоторые вещи, чтобы помочь мне в моих поисках написать эту вещь ,Отображение списка в произвольном виде данных
Там же типа данных
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».
Я пытаюсь в течение некоторого времени решить, в чем проблема. Почему он упоминает символы, когда это понимание списка возвращает список funcs?
Хорошо, спасибо, что имеет смысл. Однако теперь Haskell жалуется, что он не может соответствовать ожидаемому типу «[t0]» с фактическим типом «Prog». Это проблема, которую, как я думал, я исправил, представив показ карты, но похоже, что она просто замаскировала его. Неужели у вас тоже столь же удивительно простое объяснение этого затруднения? – nebffa
Обновлено с возможным исправлением для этого. –
Привет, огромное спасибо.Ваши объяснения действительно ясны, теперь это имеет смысл. – nebffa