我有以下代码
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中的函数永远不会有副作用。