«Не удалось загрузить модуль« Control.Monad.State ». Это ошибка скрытого пакета« mtl-2.2.2 »» при использовании runhaskell. - PullRequest
1 голос
/ 31 марта 2020

Я попытался запустить runhaskell InterpretSpec.hs, который затем извлекает из Interpret.hs this:

-- Look at how testing is set up in FORTH project and emulate here
-- Make sure you unit test every function you write
import Test.Hspec
import Test.QuickCheck
import Control.Exception (evaluate)
import Pascal.Data
import Pascal.Interpret
import Control.Monad.State
import Data.Map (Map)
import qualified Data.Map as Map
main :: IO ()
main = hspec $ do
  let startscope=SymbolTable{variables=Map.empty, global=Map.empty, loop=["notrunning"], functions=Map.empty, procedures=Map.empty, returnstring="", inmain=True}
  describe "eval" $ do
    it "takes the square root" $ do
        evalState (eval(Op1 "sqrt" (Real1 25.0))) startscope `shouldBe` (5.0)
    it "takes the cos" $ do
        evalState (eval(Op1 "cos" (Real1 0.0))) startscope `shouldBe` (1.0)
    it "takes the sin" $ do
        evalState (eval(Op1 "sin" (Real1 0.0))) startscope `shouldBe` (0.0)
    it "takes the sin" $ do
        evalState (eval(Op1 "sin" (Real1 0.0))) startscope `shouldBe` (0.0)
    it "takes the sin" $ do
        evalState (eval(Op1 "sin" (Real1 0.0))) startscope `shouldBe` (0.0)

mtl включается в файл .cabal, и я ссылаюсь на предлагаемые решения по адресу:

и

и ни одна из них не решает проблему.

1 Ответ

4 голосов
/ 31 марта 2020

Сам по себе runhaskell не учитывает ваше окружение. Вы должны использовать его через cabal exec:

cabal exec runhaskell InterpretSpec.hs
...