2017-12-09 19 views
0

숫자를 그리는 기능을 원한다. 7보다 큰 경우 승인 메시지를 보내고이 추가 기능을 호출하십시오.iskell의 무작위 입출력

그러나 내 기능은 '기타'에만 해당됩니다. '비 승인'메시지가 나타납니다. 나는 Float로 IO Float 타이핑이라고 생각한다. 이 문제를 어떻게 해결할 수 있습니까? 분수 유형 [0,1)를 사용 random 같은

mySort:: Float -> Int 
mySort = ceiling(10 * x) 


numberSort:: IO() 
numberSort = do  
    num <- randomIO :: IO Float 
    print $ mySort num 
    if(num >= 7) then 
     do 
      putStrLn ("approved!" ++ "\n") >> add 
     else 
     do 
      putStrLn "disapproved!" 
+2

'randomIO :: IO Float'은 0에서 1 사이의 부동 소수점을 생성하므로, 여기서 말하는 것은 'num'과 '7'보다는 '0.7'을 비교하는 것입니다. –

답변

3

randomIO 작품.

random :: RandomGen g => g -> (a, g) 

randomR와 동일하지만, 종류에 의해 결정된 기본 범위를 사용 (예 샤아 같은 경계의 인스턴스) 제한된 유형의

  • 이 범위는 일반적으로 전체 타입 .
  • 분수 형식의 경우 범위는 일반적으로 반 폐쇄 간격 [0,1]입니다.
  • 정수의 경우 범위는 임의로 Int입니다. 대신

사용 randomRIO, 예를 들어,

num <- randomRIO (0, 10) :: IO Float