From 4a92ef13f83ec4fe79d6dd815f1b9fe492a404fe Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Tue, 11 Jan 2022 17:43:24 +0000 Subject: =?UTF-8?q?Add=20dyadic=20function=20application,=20and=20implemen?= =?UTF-8?q?t=20dyadic=20=E2=8D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apl9.h | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'apl9.h') diff --git a/apl9.h b/apl9.h index bc6f894..415620d 100644 --- a/apl9.h +++ b/apl9.h @@ -21,13 +21,14 @@ typedef enum typedef enum { AtypeInt, - AtypeArray + AtypeArray, } arrayDataType; /* Data types */ typedef struct Array Array; typedef struct Expr Expr; +typedef struct Function Function; typedef struct Datum Datum; struct Array @@ -50,6 +51,15 @@ struct Expr Datum *toks; }; +struct Function +{ + union { + int code; + Expr *dfn; + }; + Array *left; +}; + struct Datum { datumTag tag; @@ -57,10 +67,12 @@ struct Datum Array *array; int code; Expr expr; + Function func; }; }; typedef Array* (*fnmonad)(Array*); +typedef Array* (*fndyad)(Array*, Array*); /* Function prototypes for the different source files */ /* print.c */ @@ -90,6 +102,7 @@ Array *fnShape(Array *); /* Dyadic functions from functions.h */ Array *fnCatenateFirst(Array *, Array *); +Array *fnReshape(Array *, Array *); /* Global variables */ extern Rune *errormsg; /* eval.c */ @@ -98,4 +111,5 @@ extern Rune primfuncnames[]; /* function.c */ extern Rune primmonopnames[]; /* lexer.c */ extern Rune primdyadopnames[]; /* lexer.c */ extern Rune primhybridnames[]; /* lexer.c */ -extern fnmonad monadfunctiondefs[]; /* function.c */ \ No newline at end of file +extern fnmonad monadfunctiondefs[]; /* function.c */ +extern fndyad dyadfunctiondefs[]; /* function.c */ \ No newline at end of file -- cgit v1.2.3