Re: Asking introspection Lassi Kortela 11 May 2020 09:25 UTC
> Gauche has values->list and values-ref. It is indeed handy. > However, it's a bit difficult to make those primitives cover the > necessary situations. > Suppose you want to branch by the number of values yielded by EXPR. > > (if (= (values-length EXPR) 1) > (let ((val EXPR)) ;; fast path > ...) > (let ((vals (values->list EXPR))) ;; generic path > ...)) > > You have to evaluate EXPR twice. If you want to make it evaluate once, > you have to reify it > in some way, which defeats the original motivation to write this kind of > code. The case-receive (by analogy to case-lambda) proposed by Marc solves this nicely.