[plt-scheme] optional arguments in function contracts

From: Stephen De Gabrielle (spdegabrielle at gmail.com)
Date: Fri Jun 27 05:52:45 EDT 2008


I'm trying to do a contract with an optional argument, but I'm stuck
(and can't find an example in the doc's, tests or 'plt-full' code)
my provide/contract is;
;; write-email accepts an email and optionally an output-port (2 or one args)
 (write-email (email? (or/c none/c output-port?) . -> . any))

and my function is
;; write-email : message [output-port] -> void
(define write-email
  (lambda (message (out-port (current-output-port)))
    (printf "~V:~V~N" message out-port)

but calling it I get the error; procedure write-email: expects 2
arguments, given 1:

Forgive me if this is a dumb question but I feel I'm missing something
fundamental about how I'm specifying the contract?



Stephen De Gabrielle
s.degabrielle at cs.ucl.ac.uk
Telephone +44 (0)20 7679 0693 (x30693)
Mobile 079 851 890 45
Project: Making Sense of Information (MaSI)

UCL Interaction Centre
MPEB 8th floor
University College London
Gower Street
London WC1E 6BT

Posted on the users mailing list.