On Mon, Jun 15, 2009 at 3:03 AM, Luke Palmer <lrpalmer@gmail.com> wrote:

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