小编Evi*_*ius的帖子

如何在Haskell中使用IO Double作为常规Double

我必须遵循代码

isInCircle::Double->Double->Bool
isInCircle p1 p2 = sqrt((p1*p1)+(p2*p2)) <= 1
Run Code Online (Sandbox Code Playgroud)

当我打电话的时候

isInCircle (random :: Double) (random :: Double)
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

* Couldn't match expected type `Double' with actual type `g0 -> (a0, g0)'
Run Code Online (Sandbox Code Playgroud)

如果我将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
Run Code Online (Sandbox Code Playgroud)

random io monads haskell do-notation

4
推荐指数
1
解决办法
319
查看次数

标签 统计

do-notation ×1

haskell ×1

io ×1

monads ×1

random ×1