2012-03-16 33 views
20

Gần đây tôi đã cố gắng tìm một nguồn tốt về sự khác biệt giữa monads và monoids.monoid vs monad trong Scala

Ai đó có thể cung cấp liên kết đến tài nguyên tốt về điều này hoặc có thể dành thời gian để xây dựng những điểm tương đồng/khác biệt?

+3

Có quá nhiều nội dung về monads & monoids mà tôi đoán mọi người đều có "nguồn tốt" của riêng mình. Bộ ba của tôi là: [SO câu hỏi] (http://stackoverflow.com/questions/3870088/a-monad-is-just-a-monoid-in-the-category-of-endofunctors-whats-the-problem) , [Monads Are Not Metaphors] (http://www.codecommit.com/blog/ruby/monads-are-not-metaphors) bởi Daniel Spiewak và [Monads là Dominoes] (http://apocalisp.wordpress.com/ 2011/07/01/monads-are-dominoes /) bởi Rúnar Óli – blouerat

+0

Trong lý thuyết thể loại "Đối với bất kỳ loại C nào, danh mục [C, C] của các endofunctors của nó có một cấu trúc monoidal gây ra bởi các thành phần. Một đối tượng monoid trong [ C, C] là một đơn nguyên trên C. " - từ https://en.wikipedia.org/wiki/Monoid_%28category_theory%29. Xem https://en.wikipedia.org/wiki/Monad_%28category_theory%29 để định nghĩa monad trong lý thuyết danh mục. –

Trả lời

26

Monads are monoids in the category of endofunctors. Do đó, một đơn nguyên chỉ là một ví dụ về monoid, đây là một khái niệm tổng quát hơn. Và, mặc dù điều đó có thể đúng về mặt kỹ thuật, câu trả lời đơn giản nhất là monads và monoids thực sự không giống nhau, và bạn không nên cố gắng tìm hiểu sự khác biệt giữa chúng, nhưng chỉ cần tìm hiểu chúng. Có rất nhiều tài liệu về nó trên internet, dễ dàng googled.

+4

Tôi ngạc nhiên (và hăm doạ) những ý tưởng toán học có liên quan tương đối như thế nào có thể trở nên khác biệt hoàn toàn về tất cả các thuật ngữ thực tế khi áp dụng cho các ngôn ngữ lập trình. –

+1

Câu trả lời này trong một câu hỏi khác của cộng đồng wiki là một trong những tốt nhất và súc tích nhất http://stackoverflow.com/a/7829607/541202 – Traveler

+0

Chính xác hơn "Đối với bất kỳ loại C nào, danh mục [C, C] của các trình kết thúc của nó có một cấu trúc đơn hình gây ra bởi thành phần. Một vật thể đơn trong [C, C] là một đơn nguyên trên C. " - từ https://en.wikipedia.org/wiki/Monoid_%28category_theory%29. Xem https://en.wikipedia.org/wiki/Monad_%28category_theory%29 để định nghĩa monad trong lý thuyết danh mục. –