{-|
  Dieses Modul exportiert einige Beispielfunktionen, die insbesondere
  von "Main" verwendet werden.
-}


module Modul1 where

-- Funktion ord :: Char -> Int importieren
import Data.Char (ord)

-- * Datentypen

-- | Eine Typdefinition
type T800 = (Int, Int)

{-|
  Ein anderer Haddock-Kommentar, durch @\{\-@ und @\-\}@ begrenzt.
-}
type T1000 = (Double, Double)


-- * Hauptfunktionen

-- | Wertet eine @Int@-Eingabe @n@ in einen String der Länge @n@ um. 
-- Siehe auch 'f2'.
f1 :: Int -> String
f1 n 
  | n < 0 = "Flasche leer"
  | True = take (n `mod` 80) (repeat 'x')


-- | Wertet einen @String@ in eine ganze Zahl um, die die Summe der 
-- ASCII-Werte der Zeichen im String darstellt.
f2 :: String -> Int
f2 s = if null s then 0 else ord (head s) + f2 (tail s)


-- * Hilfsfunktionen

-- | Nicht verwendet, aber sicher irgendwann hilfreich
ident :: Int -> Int
ident x = x