| Gofer |
| ähnliche Sprachen: | ML Haskell Hope Objective Caml Miranda | |
| Beschreibung: | Gofer ist eine funktionale, Haskell-aehnliche Programmiersprache. |
| Ackermann | Michael Neumann |
ackermann 0 n = n + 1 ackermann m 0 = ackermann (m-1) 1 ackermann m n = ackermann (m-1) (ackermann m (n-1)) |
| ADT Keller | Michael Neumann |
data Keller a = Create | Push (Keller a) a pop :: Keller a -> Keller a top :: Keller a -> a empty :: Keller a -> Bool empty (Create) = True empty (Push k x) = False pop (Push k x) = k top (Push k x) = x -------------------------------------------- f1 = top(Push (Create) 3) f2 = top(Push (Push (Create) 3) 4) f3 = empty(pop(Push (Push (Create) 3) 4)) f4 = Push (pop(Push (Push (Create) 3) 5)) 2 f5 = pop(Push (pop(Push (Push (Create) 3) 4)) 2) |
| Implementation des ADT (abstrakten
Datentyps) Keller. |
| Fakultät | Michael Neumann |
-- -- Fakultaet in Gofer -- fac :: Int -> Int fac 0 = 1 fac n = n * fac(n-1) -- Im Gofer-Interpreter folgendes eingeben: fac 6 |
Berechnet die Fakultät. Ergibt
720. |
| GgT | Michael Neumann |
ggt :: Int -> Int -> Int
ggt p q = if p `rem` q /= 0 then
ggt q (p `rem` q)
else
q
|
| Grösster Gemeinsamer
Teiler |
| Hello World | Michael Neumann |
show "Hello World" |
| Gibt "Hello World" auf dem Bildschirm
aus. |
| Länge einer Liste | Michael Neumann |
len [] = 0 len (h:t) = len t + 1 |
| Bestimmt die Länge einer
Liste. |
| MergeSort | Michael Neumann |
mmerge :: [Int] -> [Int] -> [Int]
mmerge [] [] = []
mmerge a [] = a
mmerge [] b = b
mmerge (ha:ta) (hb:tb) = if ha < hb then
[ha] ++ mmerge ta (hb:tb)
else
[hb] ++ mmerge (ha:ta) tb
mergesort :: [Int] -> [Int]
mergesort [] = []
mergesort l = if length l == 1 then l
else
mmerge (mergesort (drop n l))
(mergesort (take n l))
where n = length l / 2
|
| MergeSort |