@@ -14,6 +14,7 @@ io_return = prim__IO;
14run__IO : IO () -> IO ();
14run__IO : IO () -> IO ();
15run__IO (prim__IO v) = prim__IO v;
15run__IO (prim__IO v) = prim__IO v;
17data FTy = FInt | FFloat | FChar | FString | FPtr | FUnit;
18data FTy = FInt | FFloat | FChar | FString | FPtr | FUnit;
19interpFTy : FTy -> Set;
20interpFTy : FTy -> Set;
@@ -27,19 +28,25 @@ interpFTy FUnit = ();
27ForeignTy : (xs:List FTy) -> (t:FTy) -> Set;
28ForeignTy : (xs:List FTy) -> (t:FTy) -> Set;
28ForeignTy xs t = mkForeign' (rev xs) (IO (interpFTy t)) where {
29ForeignTy xs t = mkForeign' (rev xs) (IO (interpFTy t)) where {
29 mkForeign' : List FTy -> Set -> Set;
30 mkForeign' : List FTy -> Set -> Set;
30− mkForeign' Nil ty = ty;
31+ mkForeign' Nil ty = ty;
31− mkForeign' (Cons s ss) ty = mkForeign' ss (interpFTy s -> ty);
32+ mkForeign' (s :: ss) ty = mkForeign' ss (interpFTy s -> ty);
34data FEnv : List FTy -> Set where
39data FEnv : List FTy -> Set where
35− FEmpty : FEnv Nil
40+ Nil : FEnv Nil
36− | FCons : {xs:List FTy} ->
41+ | (::) : {xs:List FTy} ->
37− interpFTy x -> FEnv xs -> FEnv (Cons x xs);
42+ interpFTy x -> FEnv xs -> FEnv (x ::xs);
39data Foreign : Set -> Set where
44data Foreign : Set -> Set where
40 FFun : String -> (xs:List FTy) -> (t:FTy) ->
45 FFun : String -> (xs:List FTy) -> (t:FTy) ->
41 Foreign (ForeignTy xs t);
46 Foreign (ForeignTy xs t);
43mkForeign : Foreign x -> x;
50mkForeign : Foreign x -> x;
44-- mkForeign compiled as primitive
51-- mkForeign compiled as primitive