@@ -205,7 +205,7 @@ doExec env ctxt (TType u) = return (EType u)
206execApp :: ExecEnv -> Context -> (Term, [Term]) -> Exec ExecVal
206execApp :: ExecEnv -> Context -> (Term, [Term]) -> Exec ExecVal
207execApp env ctxt (f, args) = do newF <- doExec env ctxt f
207execApp env ctxt (f, args) = do newF <- doExec env ctxt f
208− laziness <- (getLaziness newF) >>= return . (++ repeat False)
208+ laziness <- (++ repeat False) <$> (getLaziness newF)
209 newArgs <- mapM argExec (zip args laziness)
209 newArgs <- mapM argExec (zip args laziness)
210 execApp' env ctxt newF newArgs
210 execApp' env ctxt newF newArgs
211 where getLaziness (EP _ (UN "lazy") _) = return [True]
211 where getLaziness (EP _ (UN "lazy") _) = return [True]
@@ -321,6 +321,8 @@ execApp' env ctxt f@(EP _ n _) args =
321 primRes Str (reverse s)
321 primRes Str (reverse s)
322 getOp (UN "prim__strTail") [EConstant (Str (c:s))] =
322 getOp (UN "prim__strTail") [EConstant (Str (c:s))] =
323 primRes Str s
323 primRes Str s
324+ getOp (UN "prim__subFloat") [EConstant (Fl i1), EConstant (Fl i2)] =
325+ primRes Fl (i1 - i2)
324 getOp (UN "prim__subInt") [EConstant (I i1), EConstant (I i2)] =
326 getOp (UN "prim__subInt") [EConstant (I i1), EConstant (I i2)] =
325 primRes I (i1 - i2)
327 primRes I (i1 - i2)
326 getOp n args = trace ("No prim " ++ show n ++ " for " ++ take 1000 (show args)) Nothing
328 getOp n args = trace ("No prim " ++ show n ++ " for " ++ take 1000 (show args)) Nothing