내가 문제로 실행 한 함께하스켈은 실제의 형태와 예상 float 형과 일치하지 수 '는'튜플의 두 파트를 추가 할 때
기능 유형 :
close :: (Floating a, Ord a) => (a,a) -> (a,a) -> Float
기능 정의 : 포맷
close y x = sqrt (((fromIntegral(snd x) - fromIntegral(snd y))^2) + ((fromIntegral(fst x) - fromIntegral(fst y)^2)))
포맷의 함수 AY 튜플 공급 ON() 및 도끼 튜플()는 두 좌표 사이의 거리를 계산한다. 그러나 발사에 나는의 오류 얻을 : 문제가 발생하는 이유를 이해 할
Couldn't match expected type 'Float' with actual type 'a'
a is a rigid type variable bound by...
을,하지만 난 당신이 언급하는 것입니다 디버깅하기 위해 그것을
당신이 언급'충돌이다 ...'Integral' 형 클래스에 속하도록되어 같은'A' 종류와 기능에'fromIntegral' 먹이를 입력 한 다음 정의에 A' 부동합니다. – Redu
결과를 생성하려면'Floating a => a -> Float' 함수가 필요합니다. 나는 close :: Floating a => (a, a) -> a' 또는 close :: (Integral a, Floating b) => (a, a) -> a, a) -> b'. 'Ord'와'Float'는 어디에서 왔습니까? – molbdnilo
@molbdnilo 어쩌면 출력에서 콘크리트 'Float'을 원하겠습니까? –