나는 다음과 같은 기능을 썼다 :GHC는 ST 모나드 코드를 형식 변수를 통합 할 수 없다고 거부합니까?
(.>=.) :: Num a => STRef s a -> a -> Bool
r .>=. x = runST $ do
v <- readSTRef r
return $ v >= x
을하지만 컴파일하려고 할 때 나는 다음과 같은 오류 있어요 :
Could not deduce (s ~ s1)
from the context (Num a)
bound by the type signature for
.>=. :: Num a => STRef s a -> a -> Bool
at test.hs:(27,1)-(29,16)
`s' is a rigid type variable bound by
the type signature for .>=. :: Num a => STRef s a -> a -> Bool
at test.hs:27:1
`s1' is a rigid type variable bound by
a type expected by the context: ST s1 Bool at test.hs:27:12
Expected type: STRef s1 a
Actual type: STRef s a
In the first argument of `readSTRef', namely `r'
In a stmt of a 'do' expression: v <- readSTRef r
사람이 도와 줄 수 있습니까?
참고이 있음 제약 조건은'Num'가 아니라'Ord'이어야하기 때문에 여전히 타입 체크를하지 않을 것입니다. – hammar
감사합니다. – dave4420