Skip to main content

Kategorientheorie

  • Chapter
  • First Online:
Funktionale Programmierung und Metaprogrammierung
  • 3806 Accesses

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 to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 44.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 59.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 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. 2.

    Beziehungsweise multiple-value-compose. Beide im Paket alexandria enthalten.

  3. 3.

    last berechnet aus einer Liste diejenige einelementige Liste, die nur aus deren letztem Element besteht; nicht das letzte Element.

  4. 4.

    In Common Lisp sind cdr und last aus pragmatischen Gründen auch für das Argument nil definiert und liefern nil.

  5. 5.

    In Common Lisp heißt diese identity.

  6. 6.

    Die Literatur gibt dieser Abbildung meist keinen eigenen Namen.

  7. 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. 8.

    DEFINITION NOT FOUND.

  9. 9.

    Jede von [ ] verschiedene Liste.

Literatur

  • Awodey, S. (2006). Category Theory. Oxford Logic Guides. Ebsco Publishing.

    Google Scholar 

  • 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.

    Google Scholar 

  • Lane, S. (1998). Categories for the Working Mathematician. Graduate Texts in Mathematics. Springer New York.

    Google Scholar 

  • 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.

    Google Scholar 

  • Phillips, S. and Wilson, W. H. (2010). Categorial compositionality: A category theory explanation for the systematicity of human cognition. PLoS Computational Biology, 6(7).

    Google Scholar 

  • 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).

    Google Scholar 

  • 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Patrick M. Krusenotto .

Rights and permissions

Reprints 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

Publish with us

Policies and ethics