diff options
-rw-r--r-- | ctoclean/Makefile | 7 | ||||
-rw-r--r-- | ctoclean/call.c | 8 | ||||
-rw-r--r-- | ctoclean/square.dcl | 3 | ||||
-rw-r--r-- | ctoclean/square.icl | 11 |
4 files changed, 12 insertions, 17 deletions
diff --git a/ctoclean/Makefile b/ctoclean/Makefile index 7c7047a..7290fcb 100644 --- a/ctoclean/Makefile +++ b/ctoclean/Makefile @@ -1,13 +1,12 @@ all: mkdir -p Clean\ System\ Files $(CC) -c call.c -o Clean\ System\ Files/call.o - clm square -o square + clm -l Clean\ System\ Files/call.o square -o square run: ./square clean: - rm -rf Clean\ System\ Files square - -.PHONY: clean + $(RM) -r Clean\ System\ Files square +.PHONY: all clean run diff --git a/ctoclean/call.c b/ctoclean/call.c index be5fe48..1d70d68 100644 --- a/ctoclean/call.c +++ b/ctoclean/call.c @@ -1,10 +1,8 @@ -#include <inttypes.h> -#include <stdio.h> +#include <stdint.h> -extern int64_t square(int64_t); +extern int64_t clean_square(int64_t); int64_t call_square(int64_t); int64_t call_square(int64_t x) { - return square(x); + return clean_square(x); } - diff --git a/ctoclean/square.dcl b/ctoclean/square.dcl index ea9aaa2..2306c55 100644 --- a/ctoclean/square.dcl +++ b/ctoclean/square.dcl @@ -1,5 +1,4 @@ definition module square -square :: !Int -> Int +clean_square :: !Int -> Int call_square :: !Int -> Int - diff --git a/ctoclean/square.icl b/ctoclean/square.icl index 3fd9723..897811f 100644 --- a/ctoclean/square.icl +++ b/ctoclean/square.icl @@ -2,14 +2,13 @@ implementation module square import StdEnv -foreign export square -square :: !Int -> Int -square x = x * x +foreign export clean_square +clean_square :: !Int -> Int +clean_square x = x * x call_square :: !Int -> Int -call_square x = code { - ccall square "GI:I" +call_square x = code inline { + ccall call_square "I:I" }; Start = map call_square [1..10] - |