Zusammenfassung
Die Kategorientheorie bietet interessante Möglichkeiten, Datenstrukturen mit Ablaufstrukturen zu verbinden. Sie ist in voller Allgemeinheit auch für mathematische Begriffe relativ abstrakt, was ihr die Bezeichnung abstract nonsense beziehungsweise allgemeiner Unsinn eingebracht hat. Entstanden ist sie in den 1940er-Jahren. Den Weg in die Informatik hat sie aber erst 40 Jahre später gefunden. Heute ist sie dort nahezu unverzichtbar. Das gilt besonders für die funktionale Programmierung, da die Kategorientheorie im Wesentlichen eine Algebra der Funktionen ist. Außerdem bedient die Kategorientheorie eine der Sichtweisen besonders gut, die Informatiker zu den Tugenden zählen, nämlich die Kapselung, also den Umgang mit komplexen Strukturen ohne eine bestimmte innere Beschaffenheit zu unterstellen. John McCarthy hat einmal den Begriff „pornographische Programmierung“ für solche Programmierung geprägt, bei der dieses Prinzip verletzt wird und ein Leser mehr sehen kann, als gesehen werden muss (McCarthy 1979). In der Entwicklung von Software galt es seit jeher als erstrebenswert, so zu arbeiten, dass von inneren Einzelheiten abgesehen werden kann. Denn ein höheres Maß an Abstraktion bedeutet ein höheres Maß an Allgemeingültigkeit. Der Kategorientheorie versteht dieses Ansinnnen sogar als Prinzip, sodass es nicht verwundert, dass viele Forscherinnen und Forscher auf diesem Gebiet aus der Informatik kommen. Datenstrukturen und Ablaufstrukturen sind das Ying und Yang in der Informatik. Beide müssen zueinander passen und sind aufeinander bezogen. Dennoch sind sie völlig verschiedenener Natur. Wie die Kategorientheorie eine direkte Verbindung zwischen beiden Konzepten schafft, ist Gegenstand dieses Kapitels. Es werden elementare Grundbegriffe der Kategorientheorie Objekt, Morphismus, Funktor, Produkt, Koprodukt, F-Algebra und F-Koalgebra und weitere soweit vorgestellt, dass die wichtigen Rekursionsstrukturen aus diesen abgeleitet werden können.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 1.
In unserem Kontext könnte man Menge sagen. Zu den echten Klassen, die keine Mengen sind, gehören Dinge wie die Russelsche Klasse: Sie ist die Klasse aller Klassen, die sich nicht selbst enthalten und sie kann nicht widerspruchsfrei als Menge verstanden werden („Der Barbier von Sevilla rasiert alle Männer, die sich nicht selbst rasieren. Rasiert dieser Barbier sich selbst¿‘). Da hier solche Konstruktionen nicht vorkommen, kann der Begriff Klasse hier wie der Begriff Menge verwendet werden.
- 2.
Beziehungsweise multiple-value-compose. Beide im Paket alexandria enthalten.
- 3.
last berechnet aus einer Liste diejenige einelementige Liste, die nur aus deren letztem Element besteht; nicht das letzte Element.
- 4.
In Common Lisp sind cdr und last aus pragmatischen Gründen auch für das Argument nil definiert und liefern nil.
- 5.
In Common Lisp heißt diese identity.
- 6.
Die Literatur gibt dieser Abbildung meist keinen eigenen Namen.
- 7.
Die Literatur benennt diesen Morphismus zumeist nicht besonders. Konzeptionell entspricht er dem Polymorphismus in der objektorientierten Programmierung: Ein Element eines Objektes der Kategorie (Dieses Objekt heisst in der OOP Klasse), anhand dessen eine Morphismenauswahl (OOP: Methodenauswahl) erfolgen soll, liegt im Domain einer der Morphismen das Polymorphismus. Der Polymorphismus [f 1, . . , f n ] wählt diesen Morphismus aus f 1, . . , f n aus und wendet diesen auf das Element (OOP: Objekt) an.
- 8.
DEFINITION NOT FOUND.
- 9.
Jede von [ ] verschiedene Liste.
Literatur
Awodey, S. (2006). Category Theory. Oxford Logic Guides. Ebsco Publishing.
Fokkinga, M. (1992). A gentle introduction to category theory — the calculational approach. In Lecture Notes of the STOP 1992 Summerschool on Constructive Algorithmics, pages 1–72 of Part 1. University of Utrecht.
Lane, S. (1998). Categories for the Working Mathematician. Graduate Texts in Mathematics. Springer New York.
McCarthy, J. (1979). History of lisp. http://www-formal.stanford.edu/jmc/history/lisp.ps. Zugriff 6.Mai 2016.
Meijer, E., Fokkinga, M. M., and Paterson, R. (1991). Functional programming with bananas, lenses, envelopes and barbed wire. pages 124–144. Springer-Verlag.
Phillips, S. and Wilson, W. H. (2010). Categorial compositionality: A category theory explanation for the systematicity of human cognition. PLoS Computational Biology, 6(7).
Phillips, S. and Wilson, W. H. (2011). Categorial compositionality II: universal constructions and a general theory of (quasi-)systematicity in human cognition. PLoS Computational Biology, 7(8).
Phillips, S. and Wilson, W. H. (2012). Categorial compositionality iii: F-(co)algebras and the systematicity of recursive capacities in human cognition. PLoS ONE, 7(4):1–12.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
Copyright information
© 2016 Springer Fachmedien Wiesbaden
About this chapter
Cite this chapter
Krusenotto, P.M. (2016). Kategorientheorie. In: Funktionale Programmierung und Metaprogrammierung. Springer Vieweg, Wiesbaden. https://doi.org/10.1007/978-3-658-13744-1_13
Download citation
DOI: https://doi.org/10.1007/978-3-658-13744-1_13
Published:
Publisher Name: Springer Vieweg, Wiesbaden
Print ISBN: 978-3-658-13743-4
Online ISBN: 978-3-658-13744-1
eBook Packages: Computer Science and Engineering (German Language)