2017-08-24 22 views
2

这里是我的方案代码:如何使用数鸡方案脚本参数

(define (fact n) 
    (if (= n 1) 
     1 
     (* n (fact (- n 1))))) 
(define (main args) 
    (fact (car args))) 

然后我运行这段代码的脚本在bash命令:

csi -ss test.scm 4

然而,口译员得到这个错误信息:

Error: (=) bad argument type: "4" 

Call history: 

<syntax>  (##core#lambda (n) (define (iter num result) (if (> num n) result (iter (+ num 1) (* result num)))) ... 
<syntax>  [fact2] (##core#let ((iter (##core#undefined))) (##core#set! iter (##core#lambda (num result) (if (> num n) ... 
<syntax>  [fact2] (##core#begin (##core#set! iter (##core#lambda (num result) (if (> num n) result (iter (+ num 1) (* ... 
<syntax>  [fact2] (##core#set! iter (##core#lambda (num result) (if (> num n) result (iter (+ num 1) (* result num))))... 
<syntax>  [fact2] (##core#lambda (num result) (if (> num n) result (iter (+ num 1) (* result num)))) 
<syntax>  [iter] (##core#begin (##core#if (> num n) result (iter (+ num 1) (* result num)))) 
<syntax>  [iter] (##core#if (> num n) result (iter (+ num 1) (* result num))) 
<syntax>  [iter] (> num n) 
<syntax>  [iter] (iter (+ num 1) (* result num)) 
<syntax>  [iter] (+ num 1) 
<syntax>  [iter] (* result num) 
<syntax>  [fact2] (iter 1 1) 
<syntax>  [fact2] (##core#undefined) 
<eval> [main] (fact (car args)) 
<eval> [main] (car args) 
<eval> [fact] (= n 1) <-- 

我想解释器需要t他将参数4作为字符串,那么如何在CHICKEN方案脚本参数中使用数字?

回答

2

尝试string->number,这是一个标准的R5RS过程:

(define (main args) 
    (fact (string->number (car args)))) 
相关问题