2012-01-10 28 views
16

(Xin lỗi, tôi ngu ngốc và không giáo dục, vì vậy đây có thể là một câu hỏi vô lý.)Thuật ngữ "monadic" trong J có liên quan đến việc sử dụng Haskell của nó không?

Tôi mới bắt đầu nhìn vào J, và họ sử dụng thuật ngữ "monadic" và "dyadic".) là các toán tử đơn và nhị phân. Tại sao điều này được thực hiện, và làm thế nào nó liên quan đến nơi khác tôi đã nghe thuật ngữ (Haskell)? Đoán của tôi là chúng là những từ đồng nghĩa không liên quan nhưng tôi không chắc chắn.

+8

Không phải là một câu hỏi ngu ngốc; số thứ "monad" được sử dụng để có nghĩa là khá đáng ngạc nhiên :) – ehird

+3

Tôi thứ hai ... Tên độc đáo nghe nhiều lần không có nghĩa là cùng một điều. Chỉ cần xem có bao nhiêu định nghĩa có 'functor'. –

Trả lời

13

Chúng không liên quan; C. A. McCann chỉ ra các nguyên nhân của cả hai.

Trong mọi trường hợp, việc sử dụng Haskell, tất nhiên, xuất phát từ lý thuyết danh mục và được cho là một phương thức độc lập không liên quan đến other senses of monad.

Thật vậy, ý nghĩa J "monadic" ngày trở lại APL, mà trước Haskell một phần tư thế kỷ! Tôi nghĩ rằng nó có thể predate việc sử dụng lý thuyết thể loại của thuật ngữ, quá.

+1

Tôi đoán định nghĩa của * monad * trích dẫn bạn là một phần của "truyền thống triết học phương Tây" và được sử dụng đáng chú ý bởi leibniz http://en.wikipedia.org/wiki/Gottfried_Leibniz#The_monads – jberryman

+0

Bạn đang nói về cái gì? Haskell predates Lisp, và Lisp predates APL. Trong thực tế, Haskell đã được thực hiện chỉ hai năm sau khi lắp ráp được phát minh. –

+6

@trinithis: Có lẽ bạn đang nhầm lẫn Haskell với một số ngôn ngữ khác? Lisp được chỉ định vào năm 1958, APL được phát triển từ năm 1957 đến năm 1964, nhưng Haskell không được bắt đầu cho đến năm 1987, và Haskell 1.0 không được xác định cho đến năm 1990. –

6

Không, việc sử dụng J không liên quan đến thuật ngữ Haskell. Hàm monadic và dyadic là các hàm của một và hai đối số, tương ứng.

Thuật ngữ J bắt nguồn từ APL, cũ hơn Haskell một chút, nhưng tôi hiếm khi thấy chúng được sử dụng như thế này bên ngoài gia đình APL.

Một ví dụ về việc sử dụng các thuật ngữ này trong ngữ cảnh không phải là APL là từ cuốn sách Clean Code, trong chương về chức năng nói về các hàm niladic, monadic và dyadic.

+2

Một ví dụ khác về monadic và dyadic được sử dụng bên ngoài văn học APL trong _Ngôn ngữ lập trình tiếp theo 700 của Peter Landin (1966). Xem Phần 8. và thảo luận thêm. – kaleidic

19

Chúng không liên quan trừ khi cả hai đều xuất phát từ gốc tiếng Hy Lạp cho "một". Monadic và dyadic thực sự là các thuật ngữ cho hàm unary và binary. Cụ thể, chúng là các tương đương có nguồn gốc từ Hy Lạp - sử dụng -adic thay vì -ary. Xem xét từ "bộ ba", cũng có nguồn gốc từ Hy Lạp.

Monad theo nghĩa Haskell sử dụng nó có an unclear etymology nhưng có thể xuất phát từ "monoid".

Tôi sẽ khuyến khích gắn bó với các thuật ngữ "n-ary" có nguồn gốc từ tiếng Latinh trong Haskell. Tất cả các chức năng trong Haskell về mặt kỹ thuật đều có một đối số vì cà ri, do đó, sử dụng hình thức có nguồn gốc từ Hy Lạp có thể tạo ra một số sự nhầm lẫn tùy ý.

+3

Heh, tôi thích cụm từ "tùy ý nhầm lẫn". –

11

Adicity (hoặc adinity) là một thay thế cho arity, sử dụng rễ chữ số Hy Lạp thay vì Latin:

  • niladic/medadic = nullary

  • monadic = unary

  • dyadic = binary

  • bộ ba = ternary

  • tetradic = bậc bốn

  • ...

Nghĩa hình đơn nguyên trong triết học, tôn giáo, sinh học, lý thuyết thể loại, và lập trình chức năng là tất cả được bắt nguồn riêng biệt, từ ký hiệu chữ của một “đơn vị”. Thuật ngữ Haskell có thể bắt nguồn từ monoid, một cấu trúc đại số tương đương với một đơn nguyên phụ gia.

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