2013-08-05 29 views
0

如何在鸡中使用getopt-long如何在鸡中使用getopt-long

我有下面的代码:

(require 'getopt-long) 

(define grammar 
    `((help (required #f) 
      (value #f) 
      (single-char #\h)) 
(limit (required #t) 
     (value #f) ;; optional value 
     (single-char #\l) 
     (value (required INTEGER) 
       (predicate ,integer?))) 
    )) 

(getopt-long '(program-arguments) grammar) 

但是,当我尝试使用csi运行的代码,我得到以下错误:

Error: unbound variable: getopt-long 

    Call history: 

    <eval> (##sys#list (##sys#list (##core#quote help) (##sys#list (##core#quote required) (##core#quote #f)) (...... 
    <eval> (##sys#list (##core#quote help) (##sys#list (##core#quote required) (##core#quote #f)) (##sys#list (...... 
    <eval> (##sys#list (##core#quote required) (##core#quote #f)) 
    <eval> (##sys#list (##core#quote value) (##core#quote #f)) 
    <eval> (##sys#list (##core#quote single-char) (##core#quote #\h)) 
    <eval> (##sys#list (##core#quote limit) (##sys#list (##core#quote required) (##core#quote #t)) (##sys#list ... 
    <eval> (##sys#list (##core#quote required) (##core#quote #t)) 
    <eval> (##sys#list (##core#quote value) (##core#quote #f)) 
    <eval> (##sys#list (##core#quote single-char) (##core#quote #\l)) 
    <eval> (##sys#list (##core#quote value) (##sys#list (##core#quote required) (##core#quote INTEGER)) (##sys#...... 
    <eval> (##sys#list (##core#quote required) (##core#quote INTEGER)) 
    <eval> (##sys#list (##core#quote predicate) integer?) 
    <syntax>  (getopt-long (quote (program-arguments)) grammar) 
    <syntax>  (quote (program-arguments)) 
    <syntax>  (##core#quote (program-arguments)) 
    <eval> (getopt-long (quote (program-arguments)) grammar) <-- 

什么想法?

回答

1

我想出了getopt-long的问题。您必须使用use加载getopt-long像这样:

(use getopt-long) 

(define grammar 
    `((help (required #f) 
      (value #f) 
      (single-char #\h)) 
(limit (required #f) 
     (value #f) ;; optional value 
     (single-char #\l) 
     (value (required INTEGER) 
       (predicate ,integer?))))) 
(getopt-long (argv) grammar) 
+0

yup。这就是使用(使用...);)的方式。将其标记为已解决的问题。 – ramrunner