나는 짧은 하스켈 프로그램을 작성하고 문제
import System.Random
func1=getStdRandom $ randomR ('A','Z')
main = do
print =<< func1
없이 컴파일하지만 (1100)에 튜플을 변경 한 경우, 나는 성공적으로 컴파일하기 위해 유형 서명을 추가해야합니다.
import System.Random
func2 :: IO Int
func2=getStdRandom $ randomR (1,100)
main = do
print =<< func2
기능 유형이 다릅니다.
Prelude System.Random> func1 = getStdRandom $ randomR ('A','Z')
Prelude System.Random> func2 = getStdRandom $ randomR (1,100)
Prelude System.Random> func3 = getStdRandom $ randomR (1,100) :: IO Int
Prelude System.Random> :t func1
func1 :: IO Char
Prelude System.Random> :t func2
func2 :: (Random a, Num a) => IO a
Prelude System.Random> :t func3
func3 :: IO Int
Prelude System.Random>
누군가 두 개의 유사한 찾고 튜플 (Char, Char) 및 (Int, Int)가 다른 유형 서명 함수를 생성하는 이유를 설명해 줄 수 있습니까?
그리고 함수를 옮기면 컴파일되지 않습니다.
import System.Random
main = do
print =<< getStdRandom $ randomR ('A','Z')
나도 몰라 왜 "인쇄 = < < FUNC1"작동하지만 "인쇄 = < < getStdRandom $ randomR ('A', 'Z')가"작동하지 않는 경우 FUNC1와 "getStdRandom $ randomR ('A', 'Z') "는 같은 것입니까? 당신이이 Num
typeclass의 인스턴스 중 하나가 될 수 하스켈의 문자 수를 쓸 때
감사합니다. DiegoNolan – eii0000