2012-02-27 67 views
13

Dường như Haskell đã thiết lập một số quy ước đặt tên quanh monads.Tất cả các quy ước đặt tên là gì?

Ví dụ:

  • phụ T đến cùng để có được tên của máy biến áp đơn nguyên (ví dụ Reader ->ReaderT)
  • sử dụng runXXX để thực hiện một tính toán đơn nguyên (ví dụ runST, runReader)
  • liftXXX cho các giá trị khác nhau của XXX

Có các quy ước đặt tên khác không?

Trả lời

13
  • runX m nơi m :: X a sẽ chạy X đơn nguyên và trả lại "tác dụng phụ" cùng với các kết quả đơn nguyên, a.

  • evalX m sẽ chạy tính toán và trả lại kết quả, a.

  • execX m sẽ chạy tính toán và trả về "tác dụng phụ" chứ không phải kết quả.

  • Thang máy có nhiều hương vị khác nhau có thể hơi phức tạp một chút khi tôi muốn giải thích chúng trong câu trả lời SO. Có thể bạn nên biết liftliftIO và biết/cuối cùng tìm ra các biến thể khác như liftWithliftBaseWith. Xem, ví dụ, bài đăng của EZYang về chủ đề này.

  • gắn thêm T sau tên đơn nguyên ngụ ý biến áp. Gắn thêm M sau tên hàm ngụ ý nó là đơn nguyên. Phụ thêm _ ngụ ý kết quả bị bỏ qua.

  • Tất cả các chữ cái có hậu tố khác có nghĩa là "sử dụng hoogle".

+7

Là một phụ lục ngắn http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Monad.html#g:2 mô tả một vài quy ước đặt tên tổ hợp với liên quan đến khi hậu tố M trái ngược với tiền tố m là thích hợp. –

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