是否有带签名的内置功能:: (Monad m) => m a -> a?
Hoogle告诉我们没有这样的功能.
你能解释一下原因吗?
我在Haskell中编写了一堆代码来创建文本索引.top函数如下所示:
index :: String -> [(String, [Integer])]
index a = [...]
现在我想给这个函数一个从文件读取的字符串:
index readFile "input.txt"
哪个不起作用,因为readFile的类型为FilePath - > IO String.
无法将预期类型'String'与推断类型'IO String'匹配
我看到错误,但我找不到任何类型的函数:
IO String -> String
我想成功的关键在于Monads的某些地方,但我找不到解决问题的方法.
有没有办法从单子中取出"东西"?
我正在开发一款游戏,现在我正在尝试了解数据库.我发现happstack非常好,但我无法得到这个东西.
例如,我有这个功能(希望你熟悉happstack)
getAllThings :: MonadIO m => m [Thing]
getAllThings = do
            elems <- query GetThings
            return elems
所以我明白了m [Things],但我不能在我的模型中使用它!例如
doSomeThingWithThings :: [Thing] -> Something
我用Google搜索了一下,但我一无所获.