使用IO的刺猬发电机

时间:2019-08-14 14:32:02

标签: haskell haskell-hedgehog

在刺猬官方网站上有一个post,详细说明了如何编写使用IO的刺猬生成器。其中的相关代码是:

    import           Data.Text (Text)
    import qualified Data.Text as T
    import qualified Data.Text.IO as T

    import           Hedgehog
    import qualified Hedgehog.Gen as Gen
    import qualified Hedgehog.Range as Range

    genWord :: MonadIO m => GenT m Text
    genWord = do
      ws <- T.lines <$> liftIO (T.readFile "/usr/share/dict/words")
      Gen.element ws

...之后是Gen.sample genWord,实际上是调用生成器来创建一些Text值。

代码语法检查正常。但是,当我尝试运行它时,会被告知:

• Could not deduce (MonadIO Data.Functor.Identity.Identity)
    arising from a use of ‘genWord’
  from the context: MonadIO m
    bound by the inferred type of it :: MonadIO m => m Text
    at <interactive>:62:1-27

我认为发生错误是因为该示例仅来自库或GHC的旧版本,但是我对如何跟踪实际问题并进行修复不知所措。我在刺猬资源本身或其他地方都找不到类似的例子。

(当然)我希望有一个解决方案,但是总体而言,还有更多关于如何解决此类问题的提示。

0 个答案:

没有答案