Verfasst: 29.03.2004 14:52:53
Also ich bin jetzt erstmal auf Haskell hängengeblieben. Es gibt da eine wunderschöne Seite, auf der eine beträchtliche Anzahl von Möglichkeiten gezeigt werden, wie man die Fakultät realisieren kann. Ein wahrer Leckerbissen:DavidJ hat geschrieben:Die Python-Interessierten können damit vielleicht was anfangen, war heute auf OSNews.com verlinkt: http://www.python.g2swaroop.net/
http://www.willamette.edu/~fruehr/haske ... ution.html
Ausschnitt ohne Kommentare:
Code: Alles auswählen
fac1 n = if n == 0
then 1
else n * fac1 (n-1)
fac2 = (\(n) ->
(if ((==) n 0)
then 1
else ((*) n (fac2 ((-) n 1 )))))
fac3 0 = 1
fac3 (n+1) = (n+1) * fac3 n
test1 (n+1) = n -- (test1 4) liefert 3
fac4 0 = 1
fac4 n = n * fac4 (n-1)
fac5 n = foldr (*) 1 [1..n]
fac6 n = foldl (*) 1 [1..n]
fac7 n = foldr (\x g n -> g (x*n)) id [1..n] 1
facs8 = scanl (*) 1 [1..]
fac8 n = facs8 !! n
fac9 = foldr (*) 1 . enumFromTo 1
facA n = result (forA init next done)
where init = (0,1)
next (i,m) = (i+1, m * (i+1))
done (i,_) = i==n
result (_,m) = m
forA i n d = until d n i
facB n = snd (until ((>n) . fst) (\(i,m) -> (i+1, i*m)) (1,1))
facAccC a 0 = a
facAccC a n = facAccC (n*a) (n-1)
facC = facAccC 1
facCpsD k 0 = k 1
facCpsD k n = facCpsD (k . (n *)) (n-1)
facD = facCpsD id
yE f = f (yE f)
facE = yE (\f n -> if (n==0) then 1 else n * f (n-1))
-- facF --- ausgelassen
arbG = () -- "undefined" is also a good RHS, as is "arb" :)
listencG n = replicate n arbG
listprjG f = length . f . listencG
listprodG xs ys = [ i (x,y) | x<-xs, y<-ys ]
where i _ = arbG
faclG [] = listencG 1
faclG n@(_:pred) = listprodG n (faclG pred)
facG = listprjG faclG
main = do print (test1 4)
print (fac2 4)
print (fac5 4)
weedy.