[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: (list-head lst k) with k longer than (length lst)
From: |
Mark H Weaver |
Subject: |
Re: (list-head lst k) with k longer than (length lst) |
Date: |
Tue, 17 Nov 2015 16:27:20 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Chris Vine <address@hidden> writes:
> On Tue, 17 Nov 2015 11:53:05 +0100
> Jan Synáček <address@hidden> 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