2012-09-27 48 views
5

Trong Haskell, tất cả các chức năng ban đầu được kết hôn, phải không?Haskell - Giới thiệu về Curried

Vì vậy, hãy xem hàm max và tôi sẽ viết những gì tôi hiểu về cách hoạt động của tính năng này.

Khi tôi viết một cái gì đó như thế này:

max 4 5 

gì xảy ra là một funcion mới được tạo ra trong nội bộ có giá trị là 4, sau đó recieves một giá trị, vì vậy chức năng này được áp dụng cho 5 và đúng giá trị được trả về?

Tôi đã nói điều gì đó sai trái hoặc điều này có đúng không?

+4

Hãy nhớ rằng mọi người: biện minh cho các ý kiến ​​của bạn trong các nhận xét. –

+0

Tôi đoán chúng là do câu hỏi có lỗi ngữ pháp, đó không phải là lý do chính đáng để downvote ... nếu câu hỏi khó hiểu, hãy yêu cầu làm rõ. –

+1

Bạn không thể downvote vì thiếu kiến ​​thức trên một trang Q & A, nhưng bạn có thể vì thiếu nỗ lực, tuy nhiên tôi nghĩ câu hỏi cho thấy sự hiểu biết tốt và nỗ lực rõ ràng (thành công) để giải quyết vấn đề. Tôi đã sửa một số ngữ pháp thành chủ ngữ động từ, vì đối tượng động từ đã hiểu ý nghĩa một chút. – AndrewC

Trả lời

9

Đúng vậy. Bạn có thể nhớ những gì currying là tất cả về bằng cách ghi nhớ hai trong số các bản sắc quan trọng nhất của nó:

-- Function type right-associativity: 
a -> b -> c = a -> (b -> c) 

-- Function application left-associativity: 
f x y = (f x) y 

Hai danh tính này làm việc cùng nhau và tạo ra một ngôn ngữ curried.

+0

@ user428691 Vì vậy, 'max 4 5' là viết tắt của' (max 4) 5' và 'max 4 :: Integer -> Integer' có nghĩa là nó là một hàm, giống như bạn đã nói. – AndrewC

+0

Tuyệt vời, cảm ơn bạn – elf

Các vấn đề liên quan