相关疑难解决方法(0)

具有多个monad类型的Haskell do子句

我在Haskell中使用一个名为Threepenny-GUI的图形库.在这个库中,main函数返回一个UImonad对象.这让我很头疼,因为当我尝试将IO值解压缩到局部变量时,我收到错误抱怨不同的monad类型.

这是我的问题的一个例子.这是标准主函数的略微修改版本,由Threepenny-GUI的代码示例给出:

main :: IO ()
main = startGUI defaultConfig setup

setup :: Window -> UI ()
setup w = do

labelsAndValues <- shuffle [1..10]

shuffle :: [Int] -> IO [Int]
shuffle [] = return []
shuffle xs = do randomPosition <- getStdRandom (randomR (0, length xs - 1))
                let (left, (a:right)) = splitAt randomPosition xs
                fmap (a:) (shuffle (left ++ right))
Run Code Online (Sandbox Code Playgroud)

请注意第五行:

labelsAndValues <- shuffle [1..10]
Run Code Online (Sandbox Code Playgroud)

返回以下错误:

Couldn't match type ‘IO’ with ‘UI’ …
Run Code Online (Sandbox Code Playgroud)

monads haskell threepenny-gui

8
推荐指数
2
解决办法
610
查看次数

标签 统计

haskell ×1

monads ×1

threepenny-gui ×1