From 794e0d2b6a7c8b15a302b0bb26c9d0d342d38a61 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Wed, 26 Jan 2022 09:53:02 +0000 Subject: =?UTF-8?q?Implement=20monadic=20=E2=89=A1=20(depth)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- array.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'array.c') diff --git a/array.c b/array.c index 1ae2125..7efc1b0 100644 --- a/array.c +++ b/array.c @@ -354,4 +354,28 @@ arrayspaceused(Array *a) for(int i = 0; i < a->size && a->type == AtypeArray; i++) size += arrayspaceused(a->arraydata[i]); return size; +} + +int +arraydepth(Array *a, int *uniform) +{ + if(a->type == AtypeArray){ + int max = -1; + int subuniform; + *uniform = 1; + for(int i = 0; i < a->size; i++){ + int subdepth = arraydepth(a->arraydata[i], &subuniform); + if(subdepth > max) + max = subdepth; + if((subdepth != subdepth && max != -1) || subuniform) + *uniform = 0; + } + return max+1; + }else{ + *uniform = 1; + if(a->rank == 0) + return 0; + else + return 1; + } } \ No newline at end of file -- cgit v1.2.3