2014-05-06 13 views
9

W APL i Haskell, nie monada termin oznaczać dwie zupełnie różne rzeczy, albo samo widzianą z dwóch różnych perspektyw.Haskell'a Monada vs. APL na Monad

jestem raczej nowy w obu językach i stara się nadać sens pojęć wyższego poziomu.

Odpowiedz

12

Zupełnie inaczej, w Haskell monada jest coś wyposażony w dwie funkcje

bind :: m a -> (a -> m b) -> m b 
return :: a -> m a 

i kilka zasad o tym, jak grać razem. W rzeczywistości jest to konstrukcja z teorii kategorii.

W APL monada jest po prostu termin opisujący jak wiele argumentów funkcji (czasownik) wykonuje. Wydaje się, że w "monadzie" można używać jako synonimu "funkcji unarnej" i jest to termin powszechnie spotykany w logice i językoznawstwie.

3

Z tego, co wiem, są różne rzeczy. Jeśli monada APL jest po prostu czasownikiem mającym jeden argument (jak mi się wydaje, to nie znam APL), to bardzo różni się od monady Haskella, która wywodzi się z teorii kategorii i nie ma nic wspólnego z arnością Funkcje.

6

Dwie zupełnie różne rzeczy! Monada często idzie w szeregu z "Dyad" i "Triada" po prostu oznacza "jeden", "z dwóch", "z trzech". W przypadku APL oznacza "jeden argument".

Monady w Haskell są zupełnie inne. Prawdopodobnie biorą swoją etymologię z "monoid" i "opera", z których oba są zupełnie inne.

+3

Etymologia monady: http://english.stackexchange.com/questions/30654/where-does-the-term-monad-come-from – luqui

0

programiści APL i dokumentację APL rzadko używają terminu „Monada”. Zamiast tego będą odnosić się do "funkcji monadycznej" (funkcja, która akceptuje tylko jeden argument) lub "funkcji zwanej monadyczną" (takiej, która pomija opcjonalny argument). Żadne z nich nie jest podobne do użycia terminu "Monad" przez Haskella.