【发布时间】:2018-12-16 05:16:12
【问题描述】:
我必须遵循代码
isInCircle::Double->Double->Bool
isInCircle p1 p2 = sqrt((p1*p1)+(p2*p2)) <= 1
当我打电话时
isInCircle (random :: Double) (random :: Double)
我收到这个错误
* Couldn't match expected type `Double' with actual type `g0 -> (a0, g0)'
如果我将isInCircle 函数的参数更改为IO Double,我会收到sqrt 和添加错误...
你能帮帮我吗?我的代码:
import System.Random
main :: IO ()
main = do
if isInCircle (random :: Double) (random :: Double)
then print "True"
else print "False"
isInCircle::Double->Double->Bool
isInCircle p1 p2 = sqrt((p1*p1)+(p2*p2)) <= 1
【问题讨论】:
-
我无法重现您使用您提供的代码时遇到的错误,所以我无法为您提供帮助。您必须包含实际导致此错误的代码。请阅读MCVE。
-
import System.Random main :: IO () main = do if isInCircle (random :: Double) (random :: Double) then print "True" else print "False" isInCircle::Double- >Double->Bool isInCircle p1 p2 = sqrt((p1*p1)+(p2*p2))
-
不要在 cmets 中发布更新,edit你的问题。
-
IO Double不是数字,它是产生数字的秘诀(或“动作”)。 -
@luqui 它是-2,因为在编辑之前,它没有提供足够的信息,因此根本无法回答。
标签: haskell random io monads do-notation