2015-03-27 32 views
5

Dường như tên gọi chung cho nhà điều hành ((.).(.))(.:). Đâu là (.:) được xác định? Hay tôi phải tự định nghĩa nó?Toán tử Haskell (. :) được định nghĩa ở đâu?

+6

Lưu ý rằng [Hoogle hoàn thành của FP] (https://www.fpcomplete.com/hoogle?q=.%3A&env=ghc-7.8-stable-14.09) là cực kỳ hữu ích trong các trường hợp này. – Sibi

+0

Nếu bạn có mã sử dụng một số tên và tải thành công vào 'ghci' hoặc' cabal repl', bạn có thể, ví dụ, gõ ': i.:' Để nhận một số thông tin về nó. – Heimdell

Trả lời

8

Bạn có thể tìm thấy nó trong thư viện composition, cùng với các tác phẩm chức năng đơn hàng cao hơn khác. Toán tử này không được xác định trong base. Nếu bạn không muốn thêm một gói (rất nhỏ) như là một sự phụ thuộc sau đó chỉ cần định nghĩa nó cho mình, mặc dù tôi sẽ sử dụng phiên bản khái quát hơn là sử dụng fmap:

(.:) :: (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b) 
(.:) = fmap fmap fmap 

mà chỉ fmap chức năng sa qua hai lớp của functors. Đối với các chức năng, cả ba trong số này fmap s chuyên về (.).

+0

Ồ. Thư viện tuyệt vời. Cảm ơn. – Ana

+0

Rất thích trên '.:'. Có vẻ thực sự hữu ích hơn cho các functors khác hơn là cho các hàm. –

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