-------- Originele bericht --------
Onderwerp:      Re: [racket] Is this a good design
Datum:  Thu, 01 Mar 2012 10:05:25 +0100
Van:    Roelof Wobben <r.wob...@home.nl>
Aan:    David Van Horn <dvanh...@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



____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to