Advertisement

Funktionales Programmieren

  • Gerhard Goos
Chapter
Part of the Springer-Lehrbuch book series (SLB)

Zusammenfassung

Wir hatten bisher Algorithmen als Markov-Algorithmen oder allgemeiner als Ter-mersetzungssysteme formuliert. Die (endlich vielen) Schritte eines Algorithmus waren Anwendung von Termersetzungsregeln auf die Eingabe. Letztere gaben wir als Text vor, der z. B. auch ein Term f(a,g(b, c)), mult(a, add(b, c)) oder a * (b + c) sein, und als Baum interpretiert werden konnte.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Referenzen

  1. 1.
    In anderen wissenschaftlichen Gebieten wird Programmieren in anderem Sinne gebraucht. So bedeutet im Bereich der Unternehmensforschung Programmieren: eine optimale Lösung unter bestimmten Randbedingungen finden. Wir kommen auf diesen Wortsinn im Bd. II zurück.Google Scholar
  2. 2.
    Aus pragmatischen Gründen müssen auch funktionale und logische Programmiersprachen Nebeneffekte erlauben, wenn sie Eingaben lesen oder Ausgaben ausschreiben sollen: Das Fort-schalten des Zeigers, wieweit die Eingabe gelesen, bzw. bis zu welcher Zeile geschrieben wurde, sind Nebeneffekte. Wir berücksichtigen im folgenden solche Aspekte nicht, sondern betrachten funktionale Sprachen ohne Ein/Ausgabe.Google Scholar
  3. 3.
    Man beachte, daß wir hier und im folgenden das Gleichheitszeichen mit zweierlei Bedeutung verwenden: In (v = F) bedeutet es steht füür. In (f t) = . . . = t bedeutet es kann umgeformt werden in. Letzteres ist eine Äquivalenzrelation. Ersteres ist eine definitorische Gleichsetzung, die wir sonst auch mit : = oder = def bezeichnen.Google Scholar
  4. 4.
    engl. currying, benannt nach dem amerikanischien Logiker Haskell Curry, 1900–1982, zusammen mit M. Schön Finkel der Begründer der kombinatorischen Logik.Google Scholar
  5. 5.
    engl. short-circuit evaluation. 6. engl. lazy evaluation. 7. engl. strict evaluation. Google Scholar
  6. 8.
    Warum die Regeln gerade mit den griechischen Buchstaben a, β, η bezeichnet werden, ist historisch nicht mehr nachvollziehbar.Google Scholar
  7. 9.
    LIST Processor.Google Scholar
  8. 10.
    10. McCARTHY nannte Listen zuerst S -Ausdrücke (symbolische Ausdrücke).Google Scholar
  9. 11.
    car und cdr stehen für contents of the adress part of register bzw. contents of the decrement part of register; dies sind Begriffe aus der Maschinensprache der IBM 704, auf der LISP zuerst implementiert wurde. cons ist eine Abkürzung für construct. Google Scholar
  10. 12.
    Diese Schreibweise rechtfertigt überhaupt erst die Bezeichnung Liste für den Datentyp.Google Scholar
  11. 13.
    Das Fragezeichen gehört nicht zum Ausdruck, sondern kennzeichnet, daß ein zu berech-nender Ausdruck folgt. Die nachfolgende Zeile enthält das Ergebnis.Google Scholar
  12. 14.
    Im Englischen spricht man von defining bzw. applied occurrence (ofan identifier). Google Scholar
  13. 15.
    engl. scope. Google Scholar
  14. 16.
    Auch diese Aussage ist eine Idealisierung: Wenn die Mantissenlänge nicht ausreicht, gilt nur frominteger i ~ x. Google Scholar
  15. 17.
    Die Definition in der Gofer-Implementierung unterscheidet sich ebenso wie bei einigen anderen vordefinierten Funktionen von der hier angegebenen, führt jedoch zum gleichen Resultat.Google Scholar
  16. 18.
    Die Werte des Typs t bilden also ein Monoid bezüglich der Verknüpfung τ.Google Scholar
  17. 19.
    engl. insertion sort 20. engl. selection sort Google Scholar
  18. 21.
    engl. generate and test. Google Scholar
  19. 22.
    engl. type free. Google Scholar
  20. 23.
    engl. strongly typed. Google Scholar
  21. 24.
    engl. weakly typed. 25. Statistiken aus der Industrie zeigen Beispiele, bei denen im Schnitt 50%, in der Spitze 90%, der Schnittstellenfehler durch präzise Typangaben aufgedeckt werden konnten.Google Scholar
  22. 26.
    engl. overloading. Google Scholar
  23. 27.
    In einigen imperativen Sprachen, z. B. ADA, wird zusätzlich der Ergebnistyp zur Unter-scheidung herangezogen.Google Scholar
  24. 28.
    Leonardo Pisano, filius Bonaccii, ca. 1180–1250, der erste bedeutende Mathematiker des Mittelalters.Google Scholar
  25. 29.
    Carl Friedrich Gauss, 1777–1855, deutscher Mathematiker.Google Scholar
  26. 30.
    von griech. µvῆi µa, das Andenken.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1995

Authors and Affiliations

  • Gerhard Goos
    • 1
  1. 1.Institut für Programmstrukturen und DatenorganisationUniversität KarlsruheKarlsruheDeutschland

Personalised recommendations