[racket] Is this a good design

From: Asumu Takikawa (asumu at ccs.neu.edu)
Date: Wed Feb 29 14:06:02 EST 2012

On 2012-02-29 19:14:48 +0100, ROELOF WOBBEN wrote:
>    ;String -> String
>    ;This function takes out the first character of a given string with the
>    name s
>    ; given "roelof" expect "r"
>    ; given "example" expect "e"
>    (define (string_first s)
>      (if (eq? (string? s) true)
>          (string-ith* s 0 )
>          "You have not entered a string"))
>    [Ed: reformatted]
>
>    So I hope somone can give me feedback on my first attempt so i can learn
>    from it.

A couple of comments:
  * `string-first` (- instead of the _) is a more idiomatic naming
  * (eq? (string? s) true) is verbose. (string? s) already returns a
    boolean.
  * Generally, when writing programs using the design recipe you don't
    need to think of the error cases (e.g., when the contract is
    violated) like `s` not being a string. You may want to think of some
    edge cases though (how long can a string be?).

Cheers,
Asumu

Posted on the users mailing list.