From b4ab528e1995ab7017b55a899d970feee0c74edb Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Sat, 29 Jan 2022 00:06:51 +0000 Subject: =?UTF-8?q?Implement=20intersection=20=E2=88=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apl9.h | 1 + functions.c | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/apl9.h b/apl9.h index d7cb4e1..a8d234f 100644 --- a/apl9.h +++ b/apl9.h @@ -346,6 +346,7 @@ Array *fnIndex(Array *, Array *); Array *fnIndexOf(Array *, Array *); Array *fnMembership(Array *, Array *); Array *fnUnion(Array *, Array *); +Array *fnIntersection(Array *, Array *); Array *fnExcluding(Array *, Array *); Array *fnCatenateLast(Array *, Array *); Array *fnCatenateFirst(Array *, Array *); diff --git a/functions.c b/functions.c index 6e0c6b6..ed0fb36 100644 --- a/functions.c +++ b/functions.c @@ -105,7 +105,7 @@ fndyad dyadfunctiondefs[] = { fnMembership, /* ∊ */ 0, /* ⍷ */ fnUnion, /* ∪ */ - 0, /* ∩ */ + fnIntersection, /* ∩ */ fnExcluding, /* ~ */ fnCatenateLast, /* , */ fnCatenateFirst, /* ⍪ */ @@ -1237,6 +1237,14 @@ fnUnion(Array *left, Array *right) return rundfn(L"⍺⍪⍵~⍺", nil, nil, left, right); } +Array * +fnIntersection(Array *left, Array *right) +{ + if(left->rank > 1 || right->rank > 1) + throwerror(nil, ERank); + return rundfn(L"(⍺∊⍵)⌿⍺", nil, nil, left, right); +} + Array * fnExcluding(Array *left, Array *right) { -- cgit v1.2.3