fix check
authorMart Lubbers <mart@martlubbers.net>
Wed, 20 Mar 2019 07:43:38 +0000 (08:43 +0100)
committerMart Lubbers <mart@martlubbers.net>
Wed, 20 Mar 2019 07:43:38 +0000 (08:43 +0100)
check.icl
int.dcl
tests/preamble.mfp

index e27f446..a18a378 100644 (file)
--- a/check.icl
+++ b/check.icl
@@ -22,7 +22,9 @@ check fs
        | length dups > 0 = Left ["Duplicate functions: ":[toString n\\[(Function n _ _):_]<-dups]]
        = case partition (\a->a=:(Function ['start'] _ _)) fs of
                ([], _) = Left ["No start function defined"]
-               ([Function _ [] e:_], fs) = (\x->(e, x)) <$> runInfer (infer (fromList builtin) $ makeExpression fs e)
+               ([Function _ [] e:_], fs)
+                       # e = makeExpression fs e
+                       = (\x->(e, x)) <$> runInfer (infer (fromList builtin) e)
                ([Function _ _ _:_], _) = Left ["Start cannot have arguments"]
 
 makeExpression :: [Function] Expression -> Expression
diff --git a/int.dcl b/int.dcl
index 356b986..d314ca8 100644 (file)
--- a/int.dcl
+++ b/int.dcl
@@ -5,3 +5,4 @@ from ast import :: Expression, :: Value
 
 :: Eval a
 int :: Expression -> Either [String] Value
+eval :: Expression -> Eval Value
index b984811..70fc870 100644 (file)
@@ -10,16 +10,12 @@ $ ifxr 0 x y = x y;
 + ifxl 6 = code add;
 
 on f g a b = f (g a) (g b);
-onn = \f. \g. \a. \b. f (g a) (g b);
 
 //Conditional operators
 if = code if;
 
-//fac i = if (i == 0) 1 $ i * fac (i - 1);
+fac i = if (i == 0) 1 $ i * fac (i - 1);
 id x = x;
 
 even i = if (i == 0) True (odd (i - 1));
 odd i = if (i == 0) False (even (i - 1));
-
-//start = on;
-start = ($) id 42;