Freie Monaden (cid:44) (cid:44) IngoBlechschmidt <[email protected]> 10.September2015und8.Oktober2015 AugsburgerCurry-Club 1/17 Monoide 1 DefinitionundBeispiele Nutzen FreieMonoide Funktoren 2 DefinitionundBeispiele FunktorenalsContainer Monaden 3 DefinitionundBeispiele „MonoidineinerKategorievonEndofunktoren“ FreieMonaden 4 Definition Konstruktion Nutzen 2/17 Beispiele: natürlicheZahlen,Listen,Endomorphismen,Matrizen,... Nichtbeispiele: natürlicheZahlenmitSubtraktion,nichtleereListen,... Monoide class Monoid m where EinMonoidbestehtaus (<>) :: m -> m -> m unit :: m einerMengeM, einerAbbildung(◦) : M×M → Mund einemausgezeichnetenElemente ∈ M, sodassdieMonoidaxiomegelten:Fürallex,y,z ∈ M x◦(y◦z) = (x◦y)◦z, e◦x = x, x◦e = x. 3/17 Monoide class Monoid m where EinMonoidbestehtaus (<>) :: m -> m -> m unit :: m einerMengeM, einerAbbildung(◦) : M×M → Mund einemausgezeichnetenElemente ∈ M, sodassdieMonoidaxiomegelten:Fürallex,y,z ∈ M x◦(y◦z) = (x◦y)◦z, e◦x = x, x◦e = x. Beispiele: natürlicheZahlen,Listen,Endomorphismen,Matrizen,... Nichtbeispiele: natürlicheZahlenmitSubtraktion,nichtleereListen,... 3/17 • Die natürlichen Zahlen bilden mit der Addition als Verknüpfung undderNullalsausgezeichnetesElementeinenMonoid. • DienatürlichenZahlenbildenmitderMultiplikationalsVerknüp- fungundderEinsalsausgezeichnetesElementeinenMonoid. • DieMengeX(cid:63) derendlichenListenmitEinträgenauseinerMen- ge X (in Haskell also sowas wie [X], wobei da auch unendliche undpartielldefinierteListendabeisind)bildetmitderKonkaten- ation von Listen als Verknüpfung und der leeren Liste als ausge- zeichnetesElementeinenMonoid. • IstXirgendeineMenge,sobildetdieMengeallerAbbildungenX → XmitderAbbildungskompositionalsVerknüpfungundderIden- titätsabbildungalsausgezeichnetesElementeinenMonoid. • Die natürlichen Zahlen bilden mit der Subtraktionen keinen Mo- noid,dadieDifferenzzweiernatürlicherZahlennichtimmerwie- der eine natürliche Zahl ist. Auch mit den ganzen Zahlen klappt es nicht, da die Subtraktion nicht assoziativ ist: 1 − (2 − 3) (cid:54)= (1−2)−3. Axiome in Diagrammform id×(◦) (cid:47)(cid:47) M×M×M M×M (◦)×id (◦) (cid:15)(cid:15) (cid:15)(cid:15) (cid:47)(cid:47) M×M M (◦) (cid:60)(cid:60)M(cid:79)(cid:79) (cid:98)(cid:98) (cid:47)(cid:47) (cid:111)(cid:111) M M×M M 4/17 Beide Diagramme sind Diagramme in der Kategorie der Mengen, d.h. die beteiligten Objekte M, M×M und M×M×M sind Mengen und die vorkommenden Pfeile sind Abbildungen. Wer möchte, kann aber auch vorgeben, dass M ein Typ in Haskell ist (statt M×M muss man dann(M,M)denken)unddassdiePfeileHaskell-Funktionensind. DasobereDiagrammistwiefolgtzulesen. EinbeliebigesElementausM×M×MhatdieForm(x,y,z),wobeix, yundzirgendwelcheElementeausMsind.BildenwireinsolchesEle- mentnachrechtsab,soerhaltenwir(x,y◦z).Bildenwirdiesesweiter nachuntenab,soerhaltenwirx◦(y◦z). WirkönnenaberauchdenanderenWeggehen:Bildenwir(x,y,z)erst nach unten ab, so erhalten wir (x ◦ y,z). Bilden wir dieses Element weiternachrechtsab,soerhaltenwir(x◦y)◦z. Fazit: Genau dann kommutiert das Diagramm – das heißt beide Wege lieferngleicheErgebnisse–wenndieRechenregelx◦(y◦z) = (x◦y)◦z füralleElementex,y,z ∈ Merfülltist. Die Pfeile auf dem unteren Diagramm sind nicht beschriftet. Hier die Erklärung,wasgemeintist. WirbetrachtendazueinbeliebigesElementx ∈ M(unterelinkeEckeim Diagramm).Nachrechtsabgebildeterhaltenwir(e,x).DiesesElement weiternachobenabgebildetergibte◦x. DerdirekteWegmitdemNordostverlaufendenPfeilergibtx. DaslinkeTeildreieckkommutiertalsogenaudann,wenndieRechenre- gel e◦x = x für alle x ∈ M erfüllt ist. Analog kommutiert das rechte Teildreieckgenaudann,wennx◦e = xfürallex ∈ M. Wieso der Umstand mit der Diagrammform der Axiome? Das hat ver- schiedeneschwacheGründe(esistcool),aberaucheinenstarkeninhalt- lichen: Ein Diagramm dieser Art kann man nicht nur in der Kategorie interpretieren, in der es ursprünglich gedacht war (also der Kategorie der Mengen). Man kann es auch in anderen Kategorien interpretieren. Wählt man dazu speziell eine Kategorie von Endofunktoren, so erhält mandieDefinitioneinerMonade. Monoidhomomorphismen EineAbbildungϕ : M → NzwischenMonoidenheißtgenau dannMonoidhomomorphismus,wenn ϕ(e) = eund ϕ(x◦y) = ϕ(x)◦ϕ(y)fürallex,y ∈ M. Beispiele: length :: [a] -> Int sum :: [Int] -> Int Nichtbeispiele: reverse :: [a] -> [a] head :: [a] -> a 5/17