subword :: Eq a => [a] -> [a] -> Bool
subword [] ys = True
subword xs [] = False
subword (x : xs) (y : ys) =
if x == y then subword xs ys
else subword (x : xs) ys
primes :: [ Integer ]
primes = minima teilbar [2 .. ]
where teilbar x y = 0 == mod y x
minima :: (a -> a -> Bool) -> [a] -> [a]
minima comp (x : ys) =
x : minima comp [ y | y <- ys, not (comp x y) ]
mps, mqs :: [ String ]
mps = minima subword [ show p | p <- primes ]
mqs = minima subword [ show ( n * n ) | n <- [ 1 .. ] ]
und lassen Sie sich die ersten Elemente der Listen mps, mqs
anzeigen.
Main> mps
["2","3","5","7","11","19","41","61","89","409","449","499","881","991"{Interrupted!}
(2352354 reductions, 3427365 cells, 1 garbage collection)
Main> mqs
["1","4","9","25","36","576","676","7056","80656","665856","2027776","2802276"{Interrupted!}
(2725230 reductions, 5489695 cells, 2 garbage collections)
Nach dem Satz von Kruskal sind beide Listen endlich.
Welche Elemente besitzen sie?