| Gofer |
| similar languages: | ML Haskell Hope Objective Caml Miranda | |
| Description: | Gofer is a functional Haskell-like language. |
| 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 Stack | 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 of the ADT (abstract
datatype) Stack. |
| Factorial | Michael Neumann |
-- -- Fakultaet in Gofer -- fac :: Int -> Int fac 0 = 1 fac n = n * fac(n-1) -- Im Gofer-Interpreter folgendes eingeben: fac 6 |
Calculates the factorial. Results
720. |
| gcd | Michael Neumann |
ggt :: Int -> Int -> Int
ggt p q = if p `rem` q /= 0 then
ggt q (p `rem` q)
else
q
|
| Greatest common divisor |
| Hello World | Michael Neumann |
show "Hello World" |
| Prints "Hello World" onto the
screen. |
| Length of a list | Michael Neumann |
len [] = 0 len (h:t) = len t + 1 |
| Determines the length of a
list. |
| 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 |