Tôi đang đọc một tác phẩm của Bartosz Milewski trong đó ông định nghĩa các chức năng sau:
instance Applicative Chan where
pure x = Chan (repeat x)
(Chan fs) <*> (Chan xs) = Chan (zipWith ($) fs xs)
Tại sao là ứng dụng hàm operator trong ngoặc? Tôi hiểu điều này thường được thực hiện để sử dụng chức năng infix ở dạng ký hiệu tiền tố, nhưng tôi không hiểu tại sao, trong trường hợp này, hàm không thể đơn giản chỉ được biểu thị là Chan (zipWith $ fs xs)
và tự hỏi sự khác biệt giữa hai là.
(nếu bạn vẫn cần bối cảnh, tham khảo các article)
Nó sẽ được bất kỳ đơn giản hơn nếu nó được viết là 'Chan (zipWith id fs xs)'? Nó chính xác giống như thực hiện hiện tại. – Carl
Hãy nhớ rằng '($)' không phải là một toán tử nguyên thủy huyền diệu: nó là một hàm giống như '(+)' và 'hoặc'. – AJFarmar