[racket] Fwd: Re: Is this a good design

From: Roelof Wobben (r.wobben at home.nl)
Date: Thu Mar 1 16:45:03 EST 2012

-------- Originele bericht --------
Onderwerp: 	Re: [racket] Is this a good design
Datum: 	Thu, 01 Mar 2012 10:05:25 +0100
Van: 	Roelof Wobben <r.wobben at home.nl>
Aan: 	David Van Horn <dvanhorn at ccs.neu.edu>



You can imagine alternative statements of the program contract and
>>>>>  purpose that would lead to different code. One is to drop the
>>>>>  non-empty assumption and state the error case:
>>>>>
>>>>>  ;; String ->  String
>>>>>  ;; Get first character of string if there is one, error otherwise
>>>>>
>>>>>  Then you'd want to specify the error behavior in examples (and write
>>>>>  tests that tested this behavior) and make sure your code changed to
>>>>>  reflect the revised class of data it consumes.
>>>>>

Oke,
Because the contract says the input always be a string so I only have to
check on empty strings because then there is no first character.  So the
function will be :
;; String ->  String
;; Print a error message when the input is wrong.
(define (print-foutmelding s)
   (string-append "Error:" s " on the function first-string"))

;; String ->  String
;; Get first character of string (s) if there is one, error otherwise
;; given "aaa" expected "a"
;; given "" expected " Error: Empty string  found on the function first
string"
(define (first-string s)
   (if (>  (string-length s) 0) (string-ith s 0) (print-foutmelding
"Empty string found")))


Yet another is:
>>>>>  ;; Any ->  String
>>>>>  ;; Get first character if given a non-empty string, error otherwise
>>>>>

Because the input can be anything and only on strings the first
character can be found I have to do two checks.
On is the input a string and second is it a non-empty string.
So the function will look like this :

;;String ->  String
;; Put the error message on screen because it's a empty string.
;; given "Empty string" expect ""Error:Empty string found on the
function first-string"
;; given "No String found" expect ""Error:No string found on the
function first-string"
(define (print-foutmelding s)
   (string-append "Error:" s " on the function first-string"))

;; Any  ->  String
;; Get first character of string (s) if there is one, error otherwise
;; given "aaa" expected "a"
;; given "" expected " Error: Empty string  on the function first-string"
;; given "2" expected "Error : No string found on the function first-string
(define (first-string s)
   (if (string? s) (if (>  (string-length s) 0) (string-ith s 0)
(print-foutmelding "Empty string found"))(print-foutmelding "No string
found") ))


Roelof



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20120301/89d6ad37/attachment-0001.html>

Posted on the users mailing list.