Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

125 lines (85 sloc) 3.344 kb

tags: egg

Table of Contents



= Description

Handle command-line arguments as parameter objects.

Note: This egg is no longer supported. Please refer to srfi-37, args or getopt-long for command-line argument handling libraries.

= Requirements




<syntax>(define-arguments (name [value]) ...)</syntax>

defines parameter objects for the given command line option names and sets them according to the program's parameter.

For each specified argument, should be an identifier or list of identifiers. The first of these will be bound to the newly-created parameter object. , if given, must be a boolean, string, number or symbol, and will be the default value of the parameter object. If no is given, is used. If a procedure is given, it is used as the parameter object's conversion procedure.

Each , when prefixed by one dash (in the case of a single-character identifier) or two (for all others), will be used as a command-line flag to set the corresponding parameter object's value. If contains asterisks, they are stripped from the flag.

reads and modifies Chicken's parameter, setting matched parameter objects to the specified values and removing their options from the list. Unmatched arguments are accumulated into an alist accessible by the procedure. Upon completion, will contain any non-option arguments to the program. The return value is unspecified.



is called when encounters an invalid command-line value. It is a procedure of three arguments: an error message (string), option name (string or character) and value (a string or ). By default, this procedure simply prints an error message and exits the program.



Returns an alist of the command-line arguments unmatched by . If called before , it will return an empty list.

= Examples <enscript highlight="scheme"> (use easy-args extras) (define-arguments (all-caps) (prompt "Your name? ") ((exclamations e) 1)) (display (prompt)) (let ((message (string-join `("Hello," ,(read-line))))) (if (all-caps) (display (string-upcase message)) (display message))) (print (make-string (exclamations) #\!)) (if (not (null? (unmatched-arguments))) (print (unmatched-arguments))) </enscript>

With the file above as :

  $ ./greeter
  Your name? [Henrietta]
  Hello, Henrietta!
  $ ./greeter --all-caps
  Your name? [Henrietta]
  $ ./greeter --prompt 'Name: ' -e3
  Name: [Henrietta]
  Hello, Henrietta!!!
  $ ./greeter -w --unmatched=args
  Your name? Henrietta
  Hello, Henrietta!
  ((w . #t) (unmatched . args))

= History
  • 0.6 Deprecated
  • 0.5 Use srfi-37, getopt-style flags
  • 0.4 Allow symbols
  • 0.1 Initial release

= Author

Evan Hanson

= License

Public Domain

Jump to Line
Something went wrong with that request. Please try again.