@@ -22,7 +22,13 @@ run__IO : IO () -> IO ()
2222run__IO v = io_bind v (\v' => io_return v')
2323
2424data IntTy = ITNative | IT8 | IT16 | IT32 | IT64
25−data FTy = FIntT IntTy | FFloat | FString | FPtr | FAny Type | FUnit
25+data FTy = FIntT IntTy
26+ | FFunction FTy FTy
27+ | FFloat
28+ | FString
29+ | FPtr
30+ | FAny Type
31+ | FUnit
2632
2733FInt : FTy
2834FInt = FIntT ITNative
@@ -38,15 +44,17 @@ FLong = FIntT IT64
3844
3945interpFTy : FTy -> Type
4046interpFTy (FIntT ITNative) = Int
41−interpFTy (FIntT IT8) = Bits8
42−interpFTy (FIntT IT16) = Bits16
43−interpFTy (FIntT IT32) = Bits32
44−interpFTy (FIntT IT64) = Bits64
45−interpFTy FFloat = Float
46−interpFTy FString = String
47−interpFTy FPtr = Ptr
48−interpFTy (FAny t) = t
49−interpFTy FUnit = ()
47+interpFTy (FIntT IT8) = Bits8
48+interpFTy (FIntT IT16) = Bits16
49+interpFTy (FIntT IT32) = Bits32
50+interpFTy (FIntT IT64) = Bits64
51+interpFTy (FAny t) = t
52+interpFTy FFloat = Float
53+interpFTy FString = String
54+interpFTy FPtr = Ptr
55+interpFTy FUnit = ()
56+
57+interpFTy (FFunction a b) = interpFTy a -> interpFTy b
5058
5159ForeignTy : (xs:List FTy) -> (t:FTy) -> Type
5260ForeignTy Nil rt = IO (interpFTy rt)