On Tue, Nov 17, 2015 at 10:27 PM, Mark H Weaver <m...@netris.org> wrote: > Chris Vine <ch...@cvine.freeserve.co.uk> writes: > >> On Tue, 17 Nov 2015 11:53:05 +0100 >> Jan Synáček <jan.syna...@gmail.com> wrote: >>> Hello, >>> >>> I'm getting: >>> >>> scheme@(guile-user)> (list-head '(1 2 3) 5) >>> ERROR: In procedure list-head: >>> ERROR: In procedure list-head: Wrong type argument in position 1 >>> (expecting pair): () >>> >>> This looks pretty much like a bug to me. Shouldn't list-head return >>> the entire list when the 'k' is bigger than its length? If that is not >>> the case, at least the error is really confusing. I'm using Guile >>> 2.0.11. >> >> The error message is confusing, but I guess the behaviour of list-head >> mirrors R5RS list-tail: instead of mandating the return of an empty >> list, R5RS states that "It is an error if list has fewer than k >> elements". > > Exactly right, but I agree that the error message is confusing. > > Unless otherwise specified, Scheme and Guile tend to be strict in cases > like this. For example, if a procedure is documented to "Copy the first > K elements from LST", and says nothing about what happens for lists with > fewer than K elements, you should assume that it's an error. > > Mark
Thank you for the explanation. -- Jan Synáček