나는이 기능이 어떻게 작동하는지에 관한 호기심에서 일종의 최적화로 인한 중간 매개 표현이라고 알고 싶습니다. $는 사실 하나의 인수로만 제공되는 함수라는 것을 이해합니다. 어떻게 든,이 함수를 'map'이 제공하는 목록의 함수에 적용하면 '$'함수가 정확하게 'map'에 의해 제공되는 함수가 부족하다는 것을 알 수 있습니다. 이 최적화 동작은 '$'기능 응용 프로그램에 고유 한 것입니까? 왜냐하면, 그 가치가 무엇인지 알 수 없기 때문에 아래의 편의를 위해 제공되는 '지도'와 '$'의 함수 정의에서 어떻게 이것이 나올지 알 수 없습니다.
처음부터 함수 식 앞에 '$ 3'이 있어야하지만 컴파일러에서는 계산되지 않습니다. 여기, 즉 겉으로 최적화의 확장 된 중간 표현 복용입니다 장소 :
[(4+) $3, (10*) $3, (^2) $3, sqrt $3]
정의 - $
($) :: (a -> b) -> a -> b
f $ x = f x
정의 - 예를 사용
map :: (a -> b) -> [a] -> [b]
map _ [] = []
map f (x:xs) = f x : map f xs
지도
map ($ 3) [(4+), (10*), (^2), sqrt]
내가 정확하게, 당신은 당신이 ($ 3)
를 작성하는 경우 어떻게되는지 궁금해하는 질문을 이해한다면 결과
[7.0,30.0,9.0,1.7320508075688772]
답변 해 주셔서 감사합니다. 그것은 위에 자리하고있다! –
과 설명에 합리적인 우아함이 있습니다.나는 진심으로 당신이 시간을내어 주셔서 감사합니다! –