monadicIO的工作原理

问题描述 投票:2回答:1

我有以下代码

fastShuffle :: [a] -> IO [a]
fastShuffle a = <some code>

prop_fastShuffle_correct :: [Int] -> Property
prop_fastShuffle_correct s =  monadicIO ( do
                                                sh <- run (fastShuffle s) 
                                                return ( True  ==> (insertionSort sh == insertionSort  s && if length s > 10 then s /= sh else True ) ) )

而且..它正在工作。我不明白看起来像是纯函数的(prop_fastShuffle_correct)如何调用具有副作用的非纯函数(fastShuffle)。

希望有人可以解释

谢谢!

haskell quickcheck io-monad
1个回答
1
投票

Haskell中的函数永远不会有副作用。

© www.soinside.com 2019 - 2024. All rights reserved.