Zusammenfassung
Wir hatten in den vorausgegangenen Kapiteln oft die Situation gehabt, dass wir den gleichen Namen für unterschiedliche Funktionen benutzt haben. Dafür gibt es zwei hauptsächliche Gründe:
-
Der banalere Grund ist, dass uns einfach die guten Namen ausgehen, weshalb wir alte Namen wiederverwenden. Wir hatten in Kap. 10 gesehen, dass es dafür verschiedene Techniken gibt.
-
Wenn wir für die Namen getrennte Gültigkeitsbereiche verwenden, tritt kein Problem auf. (Dieser Fall ist einer Diskussion über Polymorphie nicht relevant.)1
-
Wenn die Namen im gleichen Gültigkeitsbereich auftreten, dann sprechen wir von Überlagerung oder Overloading. Ein anderes Wort dafür ist auch Ad-hoc-Polymorphie. Für Ad-hoc-Polymorphie gibt es im Prinzip keine Einschränkungen. Das heißt, man kann für beliebige Funktionen die gleichen Namen verwenden (solange sie sich anhand ihrer Funktionalitäten vom Compiler auseinanderhalten lassen). Aber aus methodischen Gründen sollte man sich eine gewisse Selbstdisziplin auferlegen und die Namen so verwenden, dass sie zur Idee ihrer Verwendung passen. (Das typische Beispiel ist ‚+‘ für die Addition von Zahlen und für die Addition von Matrizen.)
-
-
Der wichtigere Grund ist, dass wir es mit einer „Familie“ ähnlicher (aus konzeptioneller Sicht sogar gleicher) Funktionen zu tun haben, für die wir nur einmal ein Programm schreiben wollen. (Das typische Beispiel ist die Länge einer Sequenz, deren Berechnung völlig unabhängig vom Typ der Elemente ist.) In diesem Fall spricht man von parametrischer Polymorphie.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Author information
Authors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Pepper, P. (2003). Formalismen 4: Parametrisierung und Polymorphie. In: Funktionale Programmierung. Springer-Lehrbuch. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-55818-4_20
Download citation
DOI: https://doi.org/10.1007/978-3-642-55818-4_20
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-43621-8
Online ISBN: 978-3-642-55818-4
eBook Packages: Springer Book Archive