이 질문은 모든 유형의 인수를 취할 수있는 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
관심있는 패턴을 생성합니다.