[haskell] 형식 서명 a-> b-> a와 c-> a-> c 사이에 차이가 있습니까?

이 질문은 모든 유형의 인수를 취할 수있는 Haskell 함수에 대한 이론적 질문입니다. 타입 시그니처와 함수의 차이점이 있습니까?

a -> b -> a 

c -> a -> c 

인스턴스화 되었습니까? 도움을 주시면 감사하겠습니다.



답변

다른 점이 없다. 때문에 a, b그리고 c시작 소문자 , 다음은 변수 . 변수 이름을 바꿀 수 있으며 두 개 이상의 변수가 ” 충돌 ” 하지 않는 한 동일하게 유지 됩니다.

변수가 다른 변수와 동일한 이름을 갖도록 변수 이름을 바꾸거나 두 개 이상의 변수 이름을 같은 새 이름으로 바꾸면 이러한 충돌이 발생할 수 있습니다. a예를 들어 b첫 번째 코드 조각에서 변수의 이름을 바꾸면 b -> b -> b첫 번째와 두 번째 매개 변수의 유형이 동일하기 때문에 동일하지 않습니다. 타입 시그니처에서는 동일 할 수 있지만 필요 하지 않은 두 가지 타입을 자유롭게 선택할 수 있습니다 .


답변

아니. 생각 a -> b -> a으로 This Type -> Another Type -> This Type. 그런 다음 둘 다 주어진 패턴에 맞습니다. 그러나 a -> b -> c맞지 않는 것과 같은 것 : This Type -> That Type -> Yet Another Type(일반적으로) 다르다; 의 경우를 제외하고 c = a관심있는 패턴을 생성합니다.


답변