to get the file

Werbung
»Haskell «
»Programmiersprache Haskell:«
• benannt nach Haskell B. Curry
Programmierumgebung Hugs
• einer der Pioniere des λ-Kalkül
• Haskell Users Gofer System
• erste Spezifikation der Sprache Ende 80er Jahre
• frei erhältlicher Interpreter
• aktuelle Version: Haskell 98
• für alle gängigen Plattformen
• Download, Tutorials, usw.: http://www.haskell.org/
c Prof. Dr. D. Rösner; erstellt: 5. April 2007
Sommer 2007, Programmierparadigmen (PGP), 13
»funktionale Programme in Haskell «
c Prof. Dr. D. Rösner; erstellt: 5. April 2007
Sommer 2007, Programmierparadigmen (PGP), 14
»funktionale Programme in Haskell cont. «
• Definitionen von Funktionen und anderen Werten durch
Gleichungen
• lies ‘::’ als ‘hat Typ’ oder ‘ist vom Typ’
• Beispiele:
• Definition assoziiert Namen (Identifikator) mit Wert eines
bestimmten Typs
size :: Int
size = 12 + 13
• Syntax:
square :: Int -> Int
square n = n * n
<name> :: <type>
<name> = <expression>
c Prof. Dr. D. Rösner; erstellt: 5. April 2007
Sommer 2007, Programmierparadigmen (PGP), 15
c Prof. Dr. D. Rösner; erstellt: 5. April 2007
Sommer 2007, Programmierparadigmen (PGP), 16
zwei Arten von Dateistilen:
zwei Arten von Dateistilen: cont
• Skripte (Extension ‘.hs’):
• literate Skripte (Extension ‘.lhs’):
alles ist Programmtext, sofern nicht explizit als Kommentar gekennzeichnet
– alles ist Kommentar, sofern nicht am Zeilenanfang
durch ‘>’ als Programmzeile gekennzeichnet
– literat . . . ‘wörtlich’
– Kommentare bis Zeilenende eingeleitet durch zwei aufeinanderfolgende ‘-’
– Abschnittskommentare zwischen ‘{-’ und ‘-}’
c Prof. Dr. D. Rösner; erstellt: 5. April 2007
Sommer 2007, Programmierparadigmen (PGP), 17
Beispiel eines Skripts
c Prof. Dr. D. Rösner; erstellt: 5. April 2007
Sommer 2007, Programmierparadigmen (PGP), 18
Beispiel eines literaten Skripts
{-
Die Berechnung der Funktion Fakultät ist ein
Standardbeispiel fuer Rekursion.
... mehrere Zeilen Kommentartext ...
-}
-- Berechnung der Fakultät mit Konditional if
> fak :: Int -> Int
> fak n = if n == 0 then 1 else n * fak (n - 1)
fak :: Int -> Int
Eine Variante mit Pattern-Matching:
fak n = if n == 0 then 1 else n * fak (n - 1)
> fak 0 = 1
> fak n = n * fak (n - 1)
c Prof. Dr. D. Rösner; erstellt: 5. April 2007
Sommer 2007, Programmierparadigmen (PGP), 19
c Prof. Dr. D. Rösner; erstellt: 5. April 2007
Sommer 2007, Programmierparadigmen (PGP), 20
Herunterladen