[examples
martin.hofmann@uni-bamberg.de**20090628231139] hunk ./expl/Examples.hs 3
-data Peano = Z | S Peano
+data Peano = Z | S Peano deriving (Show)
hunk ./expl/Examples.hs 5
-appenD, weave :: [a] -> [a] -> [a]
+add :: Peano -> Peano -> Peano
+add Z Z = Z
+add (S Z) Z = (S Z)
+add Z (S Z) = (S Z)
+add (S Z) (S Z) = S (S Z)
+add Z (S (S Z)) = S (S Z)
+add (S (S Z)) Z = S (S Z)
+add (S Z) (S (S Z)) = S (S (S Z))
+add (S (S Z)) (S Z) = S (S (S Z))
+add (S (S (S Z))) Z = S (S (S Z))
+add Z (S (S (S Z))) = S (S (S Z))
+
+allodds :: [Peano] -> Bool
+allodds []  = True
+allodds [Z] = False
+allodds [S Z] = True
+allodds [S(S Z)] = False
+allodds [S(S(S Z))] = True
+allodds [Z, Z] = False
+allodds [Z, S Z] = False
+allodds [Z, S(S Z)] = False
+allodds [Z, S(S(S Z))] = False
+allodds [S Z, Z] = False
+allodds [S Z, S Z] = True
+allodds [S Z, S(S Z)] = False
+allodds [S Z, S(S(S Z))] = True
+allodds [S(S Z), Z] = False
+allodds [S(S Z), S Z] = False
+allodds [S(S Z), S(S Z)] = False
+allodds [S(S Z), S(S(S Z))] = False
+allodds [S(S(S Z)), Z] = False
+allodds [S(S(S Z)), S Z] = True
+allodds [S(S(S Z)), S(S Z)] = False
+allodds [S(S(S Z)), S(S(S Z))] = True
+
+andL :: [Bool] -> Bool
+andL [] = True
+andL [True] = True
+andL [False] = False
+andL [True,True] = True
+andL [True,False] = False
+andL [False,True] = False
+andL [False,False] = False
+andL [True,True,True] = True
+andL [False,True,True] = False
+andL [True,False,True] = False
+andL [True,True,False] = False
+andL [True,False,False] = False
+andL [False,True,False] = False
+andL [False,False,True] = False
+andL [False,False,False] = False
+
+anD :: Bool -> Bool -> Bool
+anD True True = True
+anD True False = False
+anD False True = False
+anD False False = False
+
+appenD  :: [a] -> [a] -> [a]
hunk ./expl/Examples.hs 74
-weave [] [] = []
-weave [a][] = [a]
-weave [][c] = [c]
-weave [a][c] = [a,c]
-weave [a,b][] = [a,b]
-weave [][c,d] = [c,d]
-weave [a,b][c] = [a,c,b]
-weave [a][c,d] = [a,c,d]
-weave [a,b][c,d] = [a,c,b,d]
+droP :: Peano -> [a] -> [a]
+droP Z x = x
+--droP Z             []      = []
+--droP Z             [a]     = [a]
hunk ./expl/Examples.hs 79
-oddpos, evenpos :: [a] -> [a]
-oddpos [] = []
-oddpos [a] = [a]
-oddpos [a,b] = [a]
-oddpos [a,b,c] = [a,c]
-oddpos [a,b,c,d] = [a,c]
-oddpos [a,b,c,d,e] = [a,c,e]
+--droP x [] = []
+droP (S Z)         []      = []
+droP (S (S Z))     []      = []
hunk ./expl/Examples.hs 83
+--droP Z             [a,b]   = [a,b]
+--droP Z             [a,b,c] = [a,b,c]
+droP (S Z)         [a]     = []
+droP (S Z)         [a,b]   = [b]
+droP (S Z)         [a,b,c] = [b,c]
+droP (S (S Z))     [a]     = []
+droP (S (S Z))     [a,b]   = []
+droP (S (S Z))     [a,b,c] = [c]
+--droP (S (S (S Z))) []      = []
+--droP (S (S (S Z))) [a]     = []
+--droP (S (S (S Z))) [a,b]   = []
+--droP (S (S (S Z))) [a,b,c] = []
+
+eveN :: Peano -> Bool
+eveN Z                     = True
+eveN (S Z)                 = False
+eveN (S (S Z))             = True
+eveN (S (S (S Z)))         = False
+eveN (S (S (S (S Z))))     = True
+eveN (S (S (S (S (S Z))))) = False
+
+evenpos :: [a] -> [a]
hunk ./expl/Examples.hs 113
-reversE :: [a] -> [a]
-reversE [] = []
-reversE [a] =[a]
-reversE [a,b] = [b,a]
-reversE [a,b,c] = [c,b,a]
-reversE [a,b,c,d] = [d,c,b,a]
---reversE [a,b,c,d,e] = [e,d,c,b,a]
---reversE [a,b,c,d,e,f] = [f,e,d,c,b,a]
+evens :: [Peano] -> [Peano]
+evens []  = []
+evens [Z] = [Z]
+evens [Z,Z] = [Z,Z]
+evens [Z,S Z] = [Z]
+evens [Z,S (S Z)] = [Z,S (S Z)]
+evens [Z,S (S (S Z))] = [Z]
+evens [S Z, Z] = [Z]
+evens [S Z, S Z] = []
+evens [S Z, S (S Z)] = [S (S Z)]
+evens [S Z, S( S (S Z))] = []
+evens [S (S Z), Z] = [S (S Z),Z]
+evens [S (S Z), S Z] = [S (S Z)]
+evens [S (S Z), S (S Z)] = [S (S Z),S (S Z)]
+evens [S (S Z), S( S (S Z))] = [S (S Z)]
+evens [S( S (S Z)), Z] = [Z]
+evens [S( S (S Z)), S Z] = []
+evens [S( S (S Z)), S (S Z)] = [S (S Z)]
+evens [S( S (S Z)), S( S (S Z))] = []
+
+eq :: Peano -> Peano -> Bool
+eq Z Z = True
+eq Z (S Z) = False
+eq Z (S (S Z)) = False
+eq (S Z) Z = False
+eq (S Z) (S Z) = True
+eq (S Z) (S (S Z)) = False
+eq (S (S Z)) Z = False
+eq (S (S Z)) (S Z) = False
+eq (S (S Z)) (S (S Z)) = True
+
+heaD :: [a] -> a
+heaD [a] = a
+heaD [a,b] = a
+heaD [a,b,c] = a
+heaD [a,b,c,d] = a
+
+iniT:: [a] -> [a]
+iniT [a] = []
+iniT [a,b] = [a]
+iniT [a,b,c] = [a,b]
+iniT [a,b,c,d] = [a,b,c]
hunk ./expl/Examples.hs 156
-lasT, heaD :: [a] -> a
+oddpos :: [a] -> [a]
+oddpos [] = []
+oddpos [a] = [a]
+oddpos [a,b] = [a]
+oddpos [a,b,c] = [a,c]
+oddpos [a,b,c,d] = [a,c]
+oddpos [a,b,c,d,e] = [a,c,e]
+
+lasT :: [a] -> a
hunk ./expl/Examples.hs 177
-heaD [a] = a
-heaD [a,b] = a
-heaD [a,b,c] = a
-heaD [a,b,c,d] = a
-
hunk ./expl/Examples.hs 189
-iniT, taiL :: [a] -> [a]
-iniT [a] = []
-iniT [a,b] = [a]
-iniT [a,b,c] = [a,b]
-iniT [a,b,c,d] = [a,b,c]
-
-taiL [a] = []
-taiL [a,b] = [b]
-taiL [a,b,c] = [b,c]
-taiL [a,b,c,d] = [b,c,d]
-
-swap, switch, multfst,multlst,shiftl, shiftr :: [a] -> [a]
-swap [] = []
-swap [a] = [a]
-swap [a,b] = [b,a]
-swap [a,b,c] = [b,a,c]
-swap [a,b,c,d] = [b,a,d,c]
---swap [a,b,c,d,e] = [b,a,d,c,e]
---swap [a,b,c,d,e,f] = [b,a,d,c,f,e]
+lengtH :: [a] -> Peano
+lengtH [] = Z
+lengtH [a] = S Z
+lengtH [a,b] = S(S Z)
+lengtH [a,b,c] = S(S(S Z))
hunk ./expl/Examples.hs 195
-switch [] = []
-switch [a] = [a]
-switch [a,b] = [b,a]
-switch [a,b,c] = [c,b,a]
-switch [a,b,c,d] = [d,b,c,a]
---switch [a,b,c,d,e] = [e,b,c,d,a]
---switch [a,b,c,d,e,f] = [f,b,c,d,e,a]
+member :: Int -> [Int] -> [Int]
+member 1 [] = []
+member 2 [] = []
+member 1 [1] = [1]
+member 1 [2] = []
+member 2 [1] = []
+member 2 [2] = [2]
+--member 1 [1,2] = [1,2]
+member 1 [2,1] = [1]
+--member 2 [1,2] = [2]
+member 2 [2,1] = [2,1]
+--member 1 [3,1,2] = [1,2]
+--member 1 [1,2,3] = [1,2,3]
+member 1 [3,2,1] = [1]
hunk ./expl/Examples.hs 210
+multfst :: [a] -> [a]
hunk ./expl/Examples.hs 219
+multlst :: [a] -> [a]
hunk ./expl/Examples.hs 228
-shiftr [] = []
-shiftr [a] = [a]
-shiftr [a,b] = [b,a]
-shiftr [a,b,c] = [c,a,b]
-shiftr [a,b,c,d] = [d,a,b,c]
--- shiftr [a,b,c,d,e] = [e,a,b,c,d]
+odD :: Peano -> Bool
+odD Z                     = False
+odD (S Z)                 = True
+odD (S (S Z))             = False
+odD (S (S (S Z)))         = True
+odD (S (S (S (S Z))))     = False
+odD (S (S (S (S (S Z))))) = True
hunk ./expl/Examples.hs 236
+reversE :: [a] -> [a]
+reversE [] = []
+reversE [a] =[a]
+reversE [a,b] = [b,a]
+reversE [a,b,c] = [c,b,a]
+reversE [a,b,c,d] = [d,c,b,a]
+--reversE [a,b,c,d,e] = [e,d,c,b,a]
+--reversE [a,b,c,d,e,f] = [f,e,d,c,b,a]
+
+shiftl :: [a] -> [a]
hunk ./expl/Examples.hs 252
-lengtH :: [a] -> Peano
-lengtH [] = Z
-lengtH [a] = S Z
-lengtH [a,b] = S(S Z)
-lengtH [a,b,c] = S(S(S Z))
+shiftr :: [a] -> [a]
+shiftr [] = []
+shiftr [a] = [a]
+shiftr [a,b] = [b,a]
+shiftr [a,b,c] = [c,a,b]
+shiftr [a,b,c,d] = [d,a,b,c]
+-- shiftr [a,b,c,d,e] = [e,a,b,c,d]
hunk ./expl/Examples.hs 260
-takE, droP :: Peano -> [a] -> [a]
-droP Z             []      = []
---droP Z             [a]     = [a]
---droP Z             [a,b]   = [a,b]
---droP Z             [a,b,c] = [a,b,c]
---droP (S Z)         []      = []
-droP (S Z)         [a]     = []
-droP (S Z)         [a,b]   = [b]
---droP (S Z)         [a,b,c] = [b,c]
---droP (S (S Z))     []      = []
---droP (S (S Z))     [a]     = []
-droP (S (S Z))     [a,b]   = []
-droP (S (S Z))     [a,b,c] = [c]
---droP (S (S (S Z))) []      = []
---droP (S (S (S Z))) [a]     = []
---droP (S (S (S Z))) [a,b]   = []
-droP (S (S (S Z))) [a,b,c] = []
+snoc :: a -> [a] -> [a]
+snoc a []            = [a]
+snoc b [a]           = [a,b]
+snoc c [a,b]         = [a,b,c]
+snoc d [a,b,c]       = [a,b,c,d]
+--snoc e [a,b,c,d]   = [a,b,c,d,e]
+--snoc f [a,b,c,d,e] = [a,b,c,d,e,f]
hunk ./expl/Examples.hs 268
-anD :: [Bool] -> Bool
-anD [] = True
-anD [True] = True
-anD [False] = False
-anD [True,True] = True
-anD [True,False] = False
-anD [False,True] = False
-anD [False,False] = False
-anD [True,True,True] = True
-anD [False,True,True] = False
-anD [True,False,True] = False
-anD [True,True,False] = False
-anD [True,False,False] = False
-anD [False,True,False] = False
-anD [False,False,True] = False
-anD [False,False,False] = False
+swap:: [a] -> [a]
+swap [] = []
+swap [a] = [a]
+swap [a,b] = [b,a]
+swap [a,b,c] = [b,a,c]
+swap [a,b,c,d] = [b,a,d,c]
+--swap [a,b,c,d,e] = [b,a,d,c,e]
+--swap [a,b,c,d,e,f] = [b,a,d,c,f,e]
+
+switch :: [a] -> [a]
+switch [] = []
+switch [a] = [a]
+switch [a,b] = [b,a]
+switch [a,b,c] = [c,b,a]
+switch [a,b,c,d] = [d,b,c,a]
+--switch [a,b,c,d,e] = [e,b,c,d,a]
+--switch [a,b,c,d,e,f] = [f,b,c,d,e,a]
hunk ./expl/Examples.hs 286
-aNd :: Bool -> Bool -> Bool
-aNd True True = True
-aNd True False = False
-aNd False True = False
-aNd False False = False
+taiL :: [a] -> [a]
+taiL [a] = []
+taiL [a,b] = [b]
+taiL [a,b,c] = [b,c]
+taiL [a,b,c,d] = [b,c,d]
hunk ./expl/Examples.hs 292
+takE :: Peano -> [a] -> [a]
hunk ./expl/Examples.hs 310
-eveN, odD :: Peano -> Bool
-odD Z                     = False
-odD (S Z)                 = True
-odD (S (S Z))             = False
-odD (S (S (S Z)))         = True
-odD (S (S (S (S Z))))     = False
-odD (S (S (S (S (S Z))))) = True
-
-eveN Z                     = True
-eveN (S Z)                 = False
-eveN (S (S Z))             = True
-eveN (S (S (S Z)))         = False
-eveN (S (S (S (S Z))))     = True
-eveN (S (S (S (S (S Z))))) = False
-
-snoc :: a -> [a] -> [a]
-snoc a []            = [a]
-snoc b [a]           = [a,b]
-snoc c [a,b]         = [a,b,c]
-snoc d [a,b,c]       = [a,b,c,d]
---snoc e [a,b,c,d]   = [a,b,c,d,e]
---snoc f [a,b,c,d,e] = [a,b,c,d,e,f]
+weave :: [a] -> [a] -> [a]
+weave [] [] = []
+weave [a][] = [a]
+weave [][c] = [c]
+weave [a][c] = [a,c]
+weave [a,b][] = [a,b]
+weave [][c,d] = [c,d]
+weave [a,b][c] = [a,c,b]
+weave [a][c,d] = [a,c,d]
+weave [a,b][c,d] = [a,c,b,d]
hunk ./expl/Examples.hs 321
+-- ---------------------------------------------------------------------------
+-- Various non-recursive problems
+-- ---------------------------------------------------------------------------