# SPDX-FileCopyrightText: (C) 2023 Frederic Croix # SPDX-License-Identifier: GPL-2.0-or-later var all = func(obj, key=nil) { if (!size(obj)) { return 0; } var res = 1; foreach (var o; obj) { if (key) { res &= key(o); } else { res &= o; } if (res == 0) { break; } } return res; }; var any = func(obj, key=nil) { var res = 0; foreach (var o; obj) { if (key) { res |= key(o); } else { res |= o; } if (res == 1) { break; } } return res; }; var map = func(f, obj) { var res = []; foreach (var o; obj) { append(res, f(o)); } return res; }; var filter = func(f, obj) { var res = []; foreach (var o; obj) { if (f) { if (f(o)) { append(res, o); } } elsif (o) { append(res, o); } } return res; };