OK, đã lâu rồi và não của tôi có thể không hoạt động ở cấp độ Haskell, nhưng tôi không thể hiểu một ví dụ từ 'Learn You a Haskell'.Ứng dụng chức năng trong Haskell
Phần được gọi chức năng ứng dụng với $, và có ví dụ về cách $
thể được định nghĩa:
($) :: (a -> b) -> a -> b
f $ x = f x
Cho đến nay mọi thứ đều rõ ràng. Tôi hiểu tất cả các ví dụ trong phần này, trừ trường hợp mới nhất:
ghci> map ($ 3) [(4+), (10*), (^2), sqrt]
[7.0,30.0,9.0,1.7320508075688772]
Ở đây chúng ta bản đồ ($ 3)
qua danh sách các chức năng và nhận được kết quả của việc áp dụng những chức năng để 3
. Nhưng làm thế nào điều này có thể?
Từ mã đầu tiên đoạn mã thì rõ ràng rằng số đầu tiên là một chức năng, chúng tôi thậm chí có thể viết:
*Main> ($) sqrt 4
2.0
Bây giờ ($ 3)
là một ứng dụng phần chức năng $
, nhưng 3
đi vào vị trí chức năng của! Vì vậy, 3
được coi là một chức năng hay gì?
Có một bí ẩn khác: cái quái gì là (4+)
? Tôi biết rằng (+4)
là một ứng dụng một phần chức năng +
, vì vậy (4+)
nên được áp dụng một phần chức năng 4
? Vô lý. Loại thủ thuật nào hoạt động ở đây?
bản sao có thể có của [Ứng dụng một phần với chức năng Infix] (http://stackoverflow.com/questions/10131300/partial-application-with-infix-functions) – Lambdageek