
On Mon, Jun 15, 2009 at 3:03 AM, Luke Palmer
The last thing: we made startsWithUpper less general in the process; it is undefined for empty strings. We need to verify that words never returns any empty strings. I did this using SmallCheck:
ghci> import Test.SmallCheck ghci> smallCheck 10 $ \string -> all (not . null) (words string)
'Course, it turns out that SmallCheck never generates any spaces... ever. Some verifier that is. By careful inspection of the definition of words, I can see that it never returns an empty string. I couldn't find a better way to convince myself of this (I like to avoid looking at definitions when possible). Luke
Depth 0: Completed 1 test(s) without failure. Depth 1: Completed 2 test(s) without failure. Depth 2: Completed 5 test(s) without failure. Depth 3: Completed 16 test(s) without failure. Depth 4: Completed 65 test(s) without failure. Depth 5: Completed 326 test(s) without failure. Depth 6: Completed 1957 test(s) without failure. Depth 7: Completed 13700 test(s) without failure. Depth 8: Completed 109601 test(s) without failure. Depth 9: Completed 986410 test(s) without failure. Depth 10: Completed 9864101 test(s) without failure.
So I am reasonably confident that words never gives me any empty strings.
Tada! Your solution is almost exactly the same as the one-liners! :-)
Luke