X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=test.icl;h=822f41d96f79c20b12a4020c848454a937724434;hb=7db58a8b1702130a00cce2a957730e96cf477b77;hp=9837893ab28b5f44125ad230616a6b0f4da5a859;hpb=1efaf0f46ac1f86a63091091c27d078cf35cc9ca;p=clean-tests.git diff --git a/test.icl b/test.icl index 9837893..822f41d 100644 --- a/test.icl +++ b/test.icl @@ -1,103 +1,38 @@ module test -import iTasks +import StdEnv +import Data.Maybe +import Data.Functor +import Control.Monad +import Control.Applicative -Start w = doTasks t w +class expr v where + lit :: i -> v i | toString i + (+.) infixl 6 :: (v i) (v i) -> v i | + i -t:==palindrome +instance + (v a) | expr v & + a where + + l r = l +. r -palindrome :: Task (Maybe String) -palindrome - = enterInformation "Enter a palindrome" [] - >>* [ OnAction ActionOk (ifValue palindrome (\v -> return (Just v))) - , OnAction ActionCancel (always (return Nothing)) - ] - >>= viewInformation "Result is:" [] -where - palindrome s = lc == reverse lc - where - lc :: [Char] - lc = fromString s +eval :: (Maybe a) -> Maybe a +eval x = x +instance expr Maybe where + lit i = Just i + +. x y = (+) <$> x <*> y -//t :: Task (Int, Int) -//t = enterInformation "Left" [] -&&- enterInformation "Right" [] -// >>= viewInformation "Result" [] +:: Print a =: Print String +print :: (Print a) -> String +print (Print a) = a +instance expr Print where + lit i = Print (toString i) + +. (Print l) (Print r) = Print (l +++ "+" +++ r) -//import Data.GenDefault -// -//:: T = -// { a0 :: Int -// , a1 :: Int -// , a2 :: Int -// , a3 :: Int -// , a4 :: Int -// , a5 :: Int -// , a6 :: Int -// , a7 :: Int -// , a8 :: Int -// , a9 :: Int -// , a10 :: Int -// , a11 :: Int -// , a12 :: Int -// , a14 :: Int -// , a15 :: Int -// , a16 :: Int -// , a17 :: Int -// , a18 :: Int -// , a19 :: Int -// , a20 :: Int -// , a21 :: Int -// , a22 :: Int -// , a23 :: Int -// , a24 :: Int -// , a25 :: Int -// , a26 :: Int -// , a27 :: Int -// , a28 :: Int -// , a29 :: Int -// , a30 :: Int -// , a31 :: Int -// , a32 :: Int -// } -// -//class c a -//where -// a0 :: a -// a1 :: a -// a2 :: a -// a3 :: a -// a4 :: a -// a5 :: a -// a6 :: a -// a7 :: a -// a8 :: a -// a9 :: a -// a10 :: a -// a11 :: a -// a12 :: a -// a14 :: a -// a15 :: a -// a16 :: a -// a17 :: a -// a18 :: a -// a19 :: a -// a20 :: a -// a21 :: a -// a22 :: a -// a23 :: a -// a24 :: a -// a25 :: a -// a26 :: a -// a27 :: a -// a28 :: a -// a29 :: a -// a30 :: a -// a31 :: a -// a32 :: a -// a33 :: a -// -// -//derive gDefault T -// -//Start :: T -//Start = gDefault{|*|} +printEval :: (A.v: v a | expr v) -> (Maybe a, String) +//printEval f = (f, let (Print p) = f in p) +printEval f = (eval f, print f) + +//Mag niet +//Start :: (Maybe Int, String) +//Start = printEval (lit 4 + lit 38) + +//Mag wel +Start = let (Print f) = lit 4 + lit 38 in f