From fa404ca92f61ded69e431314cc39b04827e52a3d Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Wed, 25 Oct 2017 20:19:04 -0700 Subject: caseq, caseql, casequal: improvement in expansion. * eval.c (me_case): When a list of case keys is one element long, reduce it to an atom. Then a simple equality is applied whether the item is equal to the key, rather than whether it is a member of a list containing that one key. This helps with the (t) case which is mandatory, since t is ruled out as a key. --- eval.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eval.c b/eval.c index 31938f56..3f904e21 100644 --- a/eval.c +++ b/eval.c @@ -3665,6 +3665,9 @@ static val me_case(val form, val menv) if (keys == t) eval_error(form_orig, lit("~s: symbol t used as key"), casesym, nao); + if (consp(keys) && !cdr(keys)) + keys = car(keys); + if (star) { if (atom(keys)) keys = eval(keys, nil, form); -- cgit v1.2.3