add 10
[ap2015.git] / a10 / mart / skeleton10.icl
1 // Mart Lubbers s4109503
2 // Charlie Gerhardus s3050009
3 module skeleton10
4
5 import iTasks._Framework.Generic,
6 Data.Functor, Control.Applicative, Control.Monad, Data.Map, StdMisc,
7 StdInt
8 //import qualified iTasks
9 import qualified Text
10 from Text import class Text, instance Text String
11 //from StdFunc import o
12 //import qualified Data.List as List
13 import StdGeneric, StdOverloaded, StdBool, StdString
14 //import StdArray, StdOverloaded, StdOrdList, StdTuple, StdString, StdBool, StdMisc
15
16 :: TestState = {s :: Int, f :: Int}
17 :: Test :== TestState -> (TestState -> [String]) -> [String]
18 :: Match a
19 = Is (Match a)
20 | Not (Match a)
21 | Either (Match a) (Match a)
22 | LessThen a
23 | IsEqual a
24
25 eval :: a (Match a) -> Bool | gEq{|*|}, qLess{|*|} a
26 eval x (Is y) = eval x y
27 eval x (IsEqual y) = x === y
28 eval x (LessThen y) = x < y
29 eval x (Not y) = not (eval x y)
30 eval x (Either y1 y2) = eval x y1 || eval x y2
31
32 assertThat :: String x (Match x) -> String
33 assertThat s x y = case eval x y of
34 True = "Success: " +++ s
35 _ = "Fail: " +++ s
36
37 Start = assertThat "Hello Wordl" (1+1) (IsEqual 2)