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 |