WTF ist eine Monade?
-
was soll das sein?
-
-
Warum solche Fragen auch noch beantwortet werden ... er koennte auch http://de.wikipedia.org/wiki/Monade_(Kategorientheorie) meinen. Hat Leibni(t)z nicht auch mal ueber Monaden philosophiert: http://de.wikipedia.org/wiki/Monade_(Philosophie)
-
man kann damit berechnungen verketten auf eine bestimmte art und weise was das auspacken und einpacken in einen kontext angeht.
wenn du zB eine funktion hast, die einen typen A annimmt und den selbigen zurückgibt aber in einem kontext verpackt im sinne von: funktion nimmt A an und gibt Kontext(A) zurück
dann mag man solche funktionen verketten zB die funktion mehrmals hintereinanderaufrufen mit dem ergebnis des letzten aufrufs
die funktion selber nimmt aber etwas vom typ A und nicht Kontext(A) an
da kommt bind zum einsatz, in haskell als >>= bekannt= nimmt einen monadischen wert (also wert mit kontext an) packt ihn aus, führt darauf die funktion aus, welche wiederum einen monadischen wert zurückgibt
sinnvoll ist sowas wenn du zB Fehlerbehandlung hast und der Kontext einen möglichen Fehler beschreibt
zB könntest du damit in einem PC Spiel eine figur 3 Felder nach recht bewegen lassen ala: moveRight >>= moveRight >>= moveRight obwohl der rückgabewert nicht als funktionsargument passt
Vorteil: Du müsstest dabei nicht nach jedem moveRight prüfen ob nicht evtl ein Fehler (zB Kollision) eingetreten ist, da dies automatisch geschieht
Im Endeffekt sind Monaden gekennzeichnet durch >>= (also bind) und return, welches im gegensatz zu den üblichen programmiersprachen nix damit zutun hat etwas zurückzugeben sondern in einen Default-Kontext zu verpacken
-
Warum solche Fragen auch noch beantwortet werden ... er koennte auch http://de.wikipedia.org/wiki/Monade_(Kategorientheorie) meinen.
Und der nächste fragt "WTF ist eine Schleife" und du antwortest ihm mit http://de.wikipedia.org/wiki/Schleife_(Knoten) , oder wie?
-
Ich dachte bei Monade auch erst an das Gerede von Leibniz
-
Sind Monaden nicht der Hack damit man mit Haskell doch Variablen ändern kann?
-
Schleife schrieb:
Sind Monaden nicht der Hack damit man mit Haskell doch Variablen ändern kann?
Nein. Das hat damit nicht viel zu tun.
-
Nein schrieb:
Schleife schrieb:
Sind Monaden nicht der Hack damit man mit Haskell doch Variablen ändern kann?
Nein. Das hat damit nicht viel zu tun.
Nicht viel? Also schon ein bisschen oder doch garnichts?
-
Schleife schrieb:
Nein schrieb:
Schleife schrieb:
Sind Monaden nicht der Hack damit man mit Haskell doch Variablen ändern kann?
Nein. Das hat damit nicht viel zu tun.
Nicht viel? Also schon ein bisschen oder doch garnichts?
Nichts. Es sei denn du willst dich an "pure code" vs "impure code" in Bezug auf die IO Monade anlehnen.
Aber das hat nichts mit dem ändern von Variablen zu tun, sondern mit dem Verhalten, welches du von den Funktionen zu erwarten hast.
-
A monad is just a monoid in the category of endofunctors, what's the problem?
-
Monade ist die Elternklasse von Limonade.
class Limonade : public Monade
-
Man sieht wieder, das 90% nur Mist schreiben, weil sie selbst die Antwort nicht kennen (und das hinter Verarschungen verstecken) oder sich zu fein sind eine Lösung auszuschreiben.
-
das hinter Verarschungen verstecken
Ging doch schon beim ersten Post los.
-
Schleife schrieb:
Sind Monaden nicht der Hack damit man mit Haskell doch Variablen ändern kann?
In Haskell gibts keine Hacks oO !