[plt-scheme] 12.4.2 word definition; is this OK?

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Tue May 12 15:57:33 EDT 2009

I second this. I think I replied to the wrong message in the thread.  
-- Matthias



On May 12, 2009, at 2:53 PM, Felix Klock's PLT scheme proxy wrote:

> Matthias-
>
> I think Henk's response to Grant is raising a point that Carl's  
> response did not address, and therefore the finality ("Period.") of  
> your response to Henk is quite misleading.
>
> Grant's original question was: "Is this definition of word OK?"
>
> Now, I cannot tell if Grant is asking about his Data Definition  
> (which I would have written as a definition for a class "Word",  
> with a capital "W", but that's just me), or if he meant to refer to  
> his procedure definition, whose name is actually spelled "word?"  
> with a question mark.
>
> But either way, Henk points out that Grant's data definition is not  
> great, because the reader cannot tell for sure if the elements of a  
> word are constrained to only be the 26 symbols that correspond to  
> the lowercase letters of the english alphabet.
>
> Most of the responses to Grant have ignored the parenthetical "('a,  
> 'b, ..., 'z) in his data definition, but that may have been a very  
> significant component.
>
> I would say that Grant should clarify his data definition by either  
> explicitly referring to a different class like Letter which  
> consists (solely) of the 26 symbols of interest, *or* Grant should  
> remove the parenthetical.
>
> -Felix
>
> On May 10, 2009, at 4:25 PM, Matthias Felleisen wrote:
>
>>
>> Carl is right. Period. -- Matthias
>>
>>
>>
>> On May 10, 2009, at 10:47 AM, Henk Boom wrote:
>>
>>> 2009/5/10 Grant Rettke <grettke at acm.org>:
>>>> Is this definition of word OK?
>>>>
>>>> ;; A word is a list of 0 or more symbols ('a, 'b, ..., 'z).
>>>>
>>>> (check-expect empty (list))
>>>>
>>>> ;; word? : word -> boolean
>>>> ;; to determine whether the argument is a word
>>>> (define (word? arg)
>>>> (cond ((empty? arg) true)
>>>>       ((symbol? (first arg)) (word? (rest arg)))
>>>>       (else false)))
>>>>
>>>> ; word? unit tests
>>>>
>>>> (check-expect true
>>>>             (word? (list)))
>>>> (check-expect true
>>>>             (word? (list 'a)))
>>>> (check-expect true
>>>>             (word? (list 'a 'b)))
>>>> (check-expect true
>>>>             (word? (list 'a 'b 'c)))
>>>> (check-expect false
>>>>             (word? (list 'a 'b (list))))
>>>> (check-expect false
>>>>             (word? (list (list) 'b 'c)))
>>>
>>> (check-expect (word? (list 'not 'a 'word)) false)
>>>
>>>    Henk
>>> _________________________________________________
>>>  For list-related administrative tasks:
>>>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>>
>> _________________________________________________
>> For list-related administrative tasks:
>> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>



Posted on the users mailing list.