Haskell Hspec无法加载规范文件的接口

Haskell Hspec无法加载规范文件的接口,haskell,hspec,Haskell,Hspec,我正在尝试运行hspec,但得到的错误是“未能加载规范文件的接口”。我从github尝试了类似的例子,得到了相同的错误。请告诉我哪里出了问题…(PS:我可以用stack运行这个) 来自github()的示例 我有以下文件: -- src.HintExample.hs module HintExample where import SortWrapper (Sort) import qualified Language.Haskell.Interpreter as I import Languag

我正在尝试运行hspec,但得到的错误是“未能加载规范文件的接口”。我从github尝试了类似的例子,得到了相同的错误。请告诉我哪里出了问题…(PS:我可以用stack运行这个)

来自github()的示例 我有以下文件:

-- src.HintExample.hs
module HintExample where
import SortWrapper (Sort)
import qualified Language.Haskell.Interpreter as I
import Language.Haskell.Interpreter (OptionVal((:=)))

-- | Dynamically load a 'Sort' implementation from a file.
-- src is needed to pick up our SortWrapper.
-- sort-plugins is a sample user plugins directory
loadSort :: I.MonadInterpreter m =>
        String  -- ^ module name
     -> String  -- ^ function name
     -> m Sort
loadSort moduleName functionName = do
I.set [I.searchPath := ["src", "sort-plugins"]]
I.loadModules [moduleName]
I.setImports [moduleName, "SortWrapper"]
I.interpret (moduleName ++ "." ++ functionName) (I.as :: Sort)
并将测试文件作为

-- test.HintExampleSpec.hs
module HintExampleSpec where
import SortWrapper (Sort(Sort))
import HintExample (loadSort)
import qualified Language.Haskell.Interpreter as I
import Test.Hspec (Spec, hspec, describe, it, shouldBe)
import Test.Hspec.QuickCheck (prop)

-- | Required for auto-discovery.
spec :: Spec
spec =
describe "hint" $ do
it "dynamically loads a correct polymorphic sort function" $ do
  Right (Sort ourSort) <-
    I.runInterpreter (loadSort "OurSorter" "ourSort")
  ourSort "ebcad" `shouldBe` "abcde"
  ourSort [1 :: Int, 5, 4, 3, 7] `shouldBe` [1, 3, 4, 5, 7]
it "dynamically loads a wrong (only head) sort function" $ do
  Right (Sort onlyHead) <-
    I.runInterpreter (loadSort "OurSorter" "onlyHead")
  onlyHead "ebcad" `shouldBe` "e"
  onlyHead [True, False] `shouldBe` [True]

main :: IO ()
main = hspec spec
以以下身份运行:
runhaskell test/Spec.hs

您可以使用
堆栈测试运行此测试,但不能使用
runhaskell
?嗯,有两件事会立即浮现在脑海中:1)您可能从错误的目录运行
Spec.hs
,2)
runhaskell
不会知道
HintExample
。Spec.hs与HintExampleSpec.hs一起位于测试目录中,我从主项目目录运行它,名为“runhaskell test/Spec.hs”。示例位于src目录中。请让我知道,如果我的项目结构是不正确的..我也试图运行简单的项目与文件和规范文件,我得到这个错误(没有阴谋集团或堆栈文件在文件夹中)。我希望阴谋集团在全球范围内安装hspec可以做到这一点,并允许我导入测试。hspec但它不允许您使用
stack Test
,但不能使用
runhaskell
?嗯,有两件事会立即浮现在脑海中:1)您可能从错误的目录运行
Spec.hs
,2)
runhaskell
不会知道
HintExample
。Spec.hs与HintExampleSpec.hs一起位于测试目录中,我从主项目目录运行它,名为“runhaskell test/Spec.hs”。示例位于src目录中。请让我知道,如果我的项目结构是不正确的..我也试图运行简单的项目与文件和规范文件,我得到这个错误(没有阴谋集团或堆栈文件在文件夹中)。我希望阴谋集团在全球范围内安装hspec可以做到这一点,并允许我导入测试
{-# OPTIONS_GHC -F -pgmF hspec-discover #-}