add 10
[ap2015.git] / a10 / mart / skeleton10.icl
diff --git a/a10/mart/skeleton10.icl b/a10/mart/skeleton10.icl
new file mode 100644 (file)
index 0000000..5a671cb
--- /dev/null
@@ -0,0 +1,37 @@
+// Mart Lubbers s4109503\r
+// Charlie Gerhardus s3050009\r
+module skeleton10\r
+\r
+import iTasks._Framework.Generic,\r
+       Data.Functor, Control.Applicative, Control.Monad, Data.Map, StdMisc,\r
+       StdInt\r
+//import qualified iTasks\r
+import qualified Text\r
+from Text import class Text, instance Text String\r
+//from StdFunc import o\r
+//import qualified Data.List as List\r
+import StdGeneric, StdOverloaded, StdBool, StdString\r
+//import StdArray, StdOverloaded, StdOrdList, StdTuple, StdString, StdBool, StdMisc\r
+\r
+:: TestState = {s :: Int, f :: Int}\r
+:: Test :== TestState -> (TestState -> [String]) -> [String]\r
+:: Match a \r
+       = Is (Match a)\r
+       | Not (Match a)\r
+       | Either (Match a) (Match a)\r
+       | LessThen a\r
+       | IsEqual a\r
+\r
+eval :: a (Match a) -> Bool | gEq{|*|}, qLess{|*|} a\r
+eval x (Is y) = eval x y\r
+eval x (IsEqual y) = x === y\r
+eval x (LessThen y) = x < y\r
+eval x (Not y) = not (eval x y)\r
+eval x (Either y1 y2) = eval x y1 || eval x y2\r
+\r
+assertThat :: String x (Match x) -> String\r
+assertThat s x y = case eval x y of\r
+       True = "Success: " +++ s\r
+       _ = "Fail: " +++ s\r
+\r
+Start = assertThat "Hello Wordl" (1+1) (IsEqual 2)\r