Am Di., 5. Nov. 2019 um 09:14 Uhr schrieb Karsten Reincke <k.rein...@fodina.de>: > > On Mon, 2019-11-04 at 23:06 +0100, Thomas Morley wrote: > > Am Mo., 4. Nov. 2019 um 18:00 Uhr schrieb Karsten Reincke > > <k.rein...@fodina.de>: > > [...] > > Let me quote another part of my reply: > > > > Am Fr., 1. Nov. 2019 um 16:01 Uhr schrieb Thomas Morley > > <thomasmorle...@gmail.com>: > > > > > For variable amount of args I'd go for list? (or the like) and let the > > > body of your code sort it out. > > > > And that's basically what you do in your example-code. > > You are totally correct. Unfortunately, I did not read your mail as > thoroughly as > it should had been done. So, I had to find th solution by myself. But of > course. > it stays your idea.
Well, not my idea, I just pointed to that coding-principle > > > > > #(define (assign keyValue assocList defaultValue) > > > (string? list?) > > ^^^^^^^^^^^^^^^^^^ > > As far as I can tell this line is superfluous, returning #f. > > > Yep, you are right. Due to the fact, that I later on decided also to allow > other > default values than strings, I erased the third type test without considering > that > then a third type is missed. So it is indeed better to erase the complete > line. You miss the point. There is no type-checking of this kind in guile-definitions. The line (string? list?) is an expression of its own, returning #f. If you try three elements there like in (define (x a b c) (string? list? string?) (list a b c)) you'll get an error. Type-checking of this kind is done in _LilyPond's_ functions and for markup-commands. Don't confuse them. Cheers, Harm