Tôi đang cố gắng hiểu cách chuyển đổi các hàm thành ký hiệu không có điểm trong Haskell. Tôi thấy this example, nhưng nó phức tạp hơn những gì tôi đang tìm kiếm. Tôi cảm thấy như tôi hiểu logic đằng sau nó, nhưng khi tôi đang cố gắng để thực hiện một số ví dụ đơn giản trong mã tôi nhận được lỗi biên dịch. Tôi muốn thử và viết chức năng này trong phong cách điểm miễn phí:Chức năng Haskell đơn giản theo kiểu không điểm
f x = 5 + 8/x
mà tôi sắp xếp lại như f x = (+) 5 $ (/) 8 x
Vì vậy, tôi nghĩ rằng nó có thể là một cái gì đó như thế này:
f = (+) 5 $ (/) 8
nhưng khi tôi chạy điều này trong ghci Tôi nhận được thông báo này:
No instance for (Num (a0 -> a0))
arising from the literal `5' at Test.hs:3:9
Possible fix: add an instance declaration for (Num (a0 -> a0))
In the first argument of `(+)', namely `5'
In the first argument of `($)', namely `(+) 5'
In the expression: (+) 5 $ (/) 8
Failed, modules loaded: none.
Tôi không hiểu thông báo "Không có trường hợp ...". Tôi cần phải làm gì để viết chức năng này theo kiểu không có điểm?
Tôi nghĩ bạn có thể nhầm lẫn về [sự khác biệt giữa các toán tử '$' và '.'] (http://stackoverflow.com/questions/940382/haskell-difference-between-dot-and-dollar-sign). – hammar