wisp
 
(Arne Babenhauserheide)
2017-02-10: implement the basic argparse interface

implement the basic argparse interface

diff --git a/examples/argparse.w b/examples/argparse.w
--- a/examples/argparse.w
+++ b/examples/argparse.w
@@ -4,16 +4,35 @@ guile -L $(dirname $(dirname $(realpath 
 exec guile -L $(dirname $(dirname $(realpath "$0"))) --language=wisp -e '(@@ (examples argparse) main)' -s "$0" "$@"
 ; !#
 
+;; Argument parser
+;; plan: 
+;;   - simplest usage: (import (examples argparse))(let ((args (parse-args))) (write args))
+;;   - with setup: (import (examples argparse))
+;;                 (let* ((parser (setup-args #:help "foo"))
+;;                        (args (parse-args #:parser parser)))
+;;                       (write args))
+
 define-module : examples argparse
-    . #:export : parse-args setup
+    . #:export : args-parse args-setup
 
 import : ice-9 optargs
 
-define* : parse-args #:key (parser #f)
-        . #f
+define* : args-parse #:optional args #:key parser
+          if : equal? #f args
+               command-line
+               . args
 
-define* : setup #:key (help #f)
+define* : args-setup #:key (help #f)
         . #f
 
 define : main args
-       . #f
+         let : : args : args-parse args
+           write args
+         let*
+            : parser : args-setup #:help "argparse"
+              args : args-parse #:parser parser
+            write args
+         let*
+            : parser : args-setup #:help "argparse"
+              args : args-parse args #:parser parser
+            write args