Links und Funktionen
Sprachumschaltung

Navigationspfad


Inhaltsbereich

Code 02

Programmcode, welcher zur Veranschaulichung während Vorlesung 2 erstellt wurde.

Haskell source code icon Vorlesung2.hs — Haskell source code, 1 KB (1789 bytes)

Dateiinhalt

-- Einzeiliger Kommentar

{- Mehrzeiliger 
   Kommentar
-}

-- Konstantendefinition

myWert :: Integer
myWert = 1234

-- Funktionsdefinition
 
mySucc :: Int -> Int
mySucc x = x + 1


{- Mit "type" kann man Typsynomye definieren, siehe Folie 2.16
   GHC ignoriert diese aber komplett, wie dieses Beispiel zeigt -}
type MyA = Double
type MyB = Double
type MyC = MyA

ma :: MyA
ma = 1

mb :: MyB
mb = 2.0

mc :: MyC
mc = 999.999

ml :: [Double]
ml = [ma,mb,mc]

{- Wenn man aber Sicherheit haben möchte,
   um Verwechselungen zu vermeiden,
   dann kann man newtype verwenden:
   
   newtype <NeuerTypName> = <NeuerKonstruktor> <Typ>
  
   newtype wird beim Kompilieren vollständig
   eliminiert, d.h. kein Nachteilige Effizienz.   
-}   

newtype Ebbel = Ebbel (Int,Int) -- Anzahl Äpfel  und Stückpreis
newtype Berne = Berne (Int,Int) -- Anzahl Birnen und Stückpreis

moiEbbel :: Ebbel
moiEbbel = Ebbel (6,6)

moiBerne :: Berne
moiBerne = Berne (27,8)

äpfelReichtum :: Ebbel -> Int
äpfelReichtum (Ebbel (äpfelzahl,äpfelpreis)) = äpfelzahl * äpfelpreis

{-
> äpfelReichtum moiEbbel 
36

>äpfelReichtum moiBerne

  Fehlermeldung: `Ebbel' mit `Berne' verwechselt!  
-}



{- Verschiedene Möglichkeiten, eine Funktione zu definieren: 
   Dazu werden wir noch ausführlichere Folien sehen.
 -}

foo :: Int -> (Bool -> (Int -> Int))
foo a addiere b =
  if addiere     -- <Bool> ? <Wahr> : <Falsch>
    then a + b
    else a - b
    
foo' :: Int -> (Bool -> (Int -> Int))
foo' a True  b = a + b
foo' a False b = a - b

  
foo'' :: Int -> (Bool -> (Int -> Int))
foo'' a addiere b 
  | addiere == True  = a + b
--  | addiere == False = a - b
  | True             = a - b 
    
foo''' :: Int -> (Bool -> (Int -> Int))
foo''' a addiere b 
  | addiere   = a + b
  | otherwise = a - b
    

Artikelaktionen

abgelegt unter:

Funktionsleiste