--data List a = Nil | Cons a (List a) -- deriving (Show) --result :: String result = showIntList primes not True = False not False = True showInt 0 = "0" showInt 1 = "1" showInt 2 = "2" showInt 3 = "3" showInt 4 = "4" showInt 5 = "5" showInt 6 = "6" showInt 7 = "7" showInt 8 = "8" showInt 9 = "9" showInt n = (++) (showInt (div n 10)) (showInt (mod n 10)) showIntList [] = "" showIntList (h:t) = (++) (showInt h) ((++) ", " (showIntList t)) --primesbelow :: Int -> String --primesbelow n = showIntList (eratos (enumFT 2 n)) --f :: Int -> Int -> Bool f h x = not ((eqInt) (mod x h) 0) --eratos :: [Int] -> [Int] eratos (h:t) = h : (fil (f h) (eratos t)) eratos [] = [] --enumFT :: Int -> Int -> [Int] --enumFT f t -- | f > t = Nil -- | otherwise = Cons f (enumFT ((+) f 1) t) --enumF :: Int -> [Int] enumF f = f : (enumF (succ f)) --primes :: [Int] primes = eratos (enumF 2) --fil :: (a -> Bool) -> [a] -> [a] fil v [] = [] -- @ (@ fil v) Nil fil p l@(h:t) = fil' p l (p h) {- type Graph = (Int, IntMap X) type FunMap = IntMap Rule type Fun = [(Graph, Graph)] fil = [(g1, g2), (g3, g4)] g1 = (0, fromList [(0,App (Ref 1) (Ref 2)),(1,App (Fun `fil`) (Ref 3)),(2,Con Nil),(3,Var 0)]) g2 = (0, fromList [(0,Con Nil)]) g3 = (0, fromList [(0,App (Ref 1) (Ref 2)),(1,App (Fun `fil`) (Ref 3)),(2,App ),(3,W) g4 = (0, fromList [(0, App (Ref 1) (Ref 5) ,(1, App (Ref 2) (Ref 4) ,(2, App (Fun `fil`) (Ref 3) ,(3, Var 3) ,(4, Var 2) -} fil' p (h:t) True = h : fil p t fil' p (h:t) False = fil p t {- eratos [2,3,4,5,6,7] == 2:filter (f 2) (eratos [3,4,5,6,7]) == 2:filter (f 2) (3:filter (f 3) (eratos [4,5,6,7])) == 2:filter (f 2) (3:filter (f 3) (4:filter (f 4) (eratos [5,6,7]))) == 2:filter (f 2) (3:filter (f 3) (4:filter (f 4) (5:filter (f 5) (eratos [6,7])))) == 2:filter (f 2) (3:filter (f 3) (4:filter (f 4) (5:filter (f 5) (6:filter (f 6) (eratos [7]))))) == 2:filter (f 2) (3:filter (f 3) (4:filter (f 4) (5:filter (f 5) (6:filter (f 6) (7:filter (f 7) (eratos [])))))) == 2:filter (f 2) (3:filter (f 3) (4:filter (f 4) (5:filter (f 5) (6:filter (f 6) (7:filter (f 7) []))))) == 2:filter (f 2) (3:filter (f 3) (4:filter (f 4) (5:filter (f 5) (6:filter (f 6) (7:[]))))) == 2:filter (f 2) (3:filter (f 3) (4:filter (f 4) (5:filter (f 5) (6:7:[])))) == 2:filter (f 2) (3:filter (f 3) (4:filter (f 4) (5:6:7:[]))) == 2:filter (f 2) (3:filter (f 3) (4:5:6:7:[])) == 2:filter (f 2) (3:4:5:7:[]) == 2:3:5:7:[] -}