On 07/01/2012 09:27 AM, Eli Barzilay wrote:
There rare cases where it is useful to have a value that means that no
argument was passed to a function.  In many of these cases there is a
plain value that is used as that mark, with the most idiomatic one
being #f, but sometimes others are used.  IMO, while such uses of #f
are idiomatic, they're a hack where an argument's domain is extended
only to mark "no argument".

I believe this is why CL lambda lists allow another variable name when specifying optional parameters.

http://www.lispworks.com/documentation/HyperSpec/Body/03_dab.htm
http://www.gigamonkeys.com/book/functions.html

(defun f (&optional (arg 'default-value arg-supplied?))
  (if arg-supplied?
      'real-value
      'default-value))


Matlab's nargin and nargout are another interesting approach.
http://www.mathworks.com/help/techdoc/ref/nargin.html
http://www.mathworks.com/help/techdoc/ref/nargout.html


A (supplied? arg) special form might also work.

- Daniel

_________________________
 Racket Developers list:
 http://lists.racket-lang.org/dev

Reply via email to