Ну, я бился головой о намек , но сейчас я сдаюсь. Я знаю, что подсказка может сделать это, но я не знаю, как. [править] См. Ответ TomMD о том, как настроить импорт для подсказки. [/ edit ]
import Language.Haskell.Interpreter (eval, runInterpreter, Interpreter, InterpreterError)
main = do let resIO = eval "3" :: Interpreter String
res <- runInterpreter resIO
print res
Это неинтересно выдает Right "3"
в результате. Я пробовал следующие варианты, только чтобы столкнуться с ошибками:
... eval "3 + 3" ....
-- yields --
Left (WontCompile [GhcError (errMsg = "Not in scope: `+'"])
Оператор +
не находится в области видимости ??? WTF ...
import Language.Haskell.Interpreter (interpret, as, runInterpreter, Interpreter)
main = do let resIO = interpret "3" (as :: Int) :: Interpreter Int
res <- runInterpreter resIO
print res
-- yields --
Left (WontCompile [GhcError (errMsg = "Not in scope: type constructor or class 'Int'")])
Класс Int
не находится в области видимости ??? тьфу ...
Я приглашаю тех, кто более осведомлен, чем я, излагать более тонкие детали подсказки.