저는 하스켈을 가르치고 있습니다. 그리고 저는 이름 선언에 대해 저에게 질문을 제기하는 "뒤집기"함수의 두 가지 구현을 보았습니다.하스켈 이름 선언 규칙
이이 같은 일을 : 내가 기대하는 것처럼
flip'' :: (a -> b -> c) -> b -> a -> c
flip'' f y x = f x y
flip' :: (a -> b -> c) -> (b -> a -> c)
flip' f = g
where g x y = f y x
첫 번째 예입니다. 두 번째 예에서는 x 또는 y를 아직 선언하지 않은 경우 g x y = f y x
을 쓸 수있는 이유가 무엇인지 혼동합니다. 나는 게으른 평가가 필요할 때까지 평가되지 않는다는 것을 이해하지만 적어도 컴파일러가 선언을 원할 것으로 기대했다.
그것은 ... 심지어 타입 서명없이 컴파일이 잘 작동 :
flip' f = g
where g x y = f y x
그래서 x와 y 그냥 완전히 지정되지 않은 변수? 아니면 다른 일이 있습니까? 왜 우리가 이것을 할 수 있습니까?
x와 y는 여러 형태로 입력 된 변수입니다. 특별한 방식으로 사용되지 않으므로 유형은 무엇이든 될 수 있습니다. – AndrewC
@AndrewC 감사합니다. - 그것에 대해 생각해 볼 수있는 유용한 방법입니다. 그리고 내 추가 연구를위한 훌륭한 키워드입니다. – Stephen