Scheme 方案,搜索有关输入密码的列表

Scheme 方案,搜索有关输入密码的列表,scheme,Scheme,我是方案编程新手。我应该做的是创建一个密码系统,它将由名为pool的数据库中的字符组成。我想做的是检查用户输入的密码是由这些有效字符组成,还是输入了无效字符。我尝试的是: (define pool (list 'A 'B 'C 'D 'E 'F 'G 'H 'I 'J 'K 'L 'M 'N 'O 'P 'Q 'R 'S 'T 'U 'V 'W 'X 'Y 'Z 'a 'b 'c 'd 'e 'f 'g 'i 'j 'k 'l 'm 'n 'o 'p 'r 'q 's 't 'u 'v

我是方案编程新手。我应该做的是创建一个密码系统,它将由名为pool的数据库中的字符组成。我想做的是检查用户输入的密码是由这些有效字符组成,还是输入了无效字符。我尝试的是:

(define pool (list 'A 'B 'C 'D 'E 'F 'G 'H 'I 'J  'K 'L  'M 'N  'O 'P 'Q 'R 'S  'T 'U 'V 'W 'X  'Y 'Z 'a 'b 'c 'd 'e 'f 'g 'i 'j 'k 'l 'm 'n 'o 'p 'r 'q 's 't 'u 'v 'w 'x 'y 'z 1 2 3 4 5 6 7 8 9 0  '?  '!  `!    '% '^ '& '* '_ '- '+ '= "{" "[" "}" "]" ":" ";" "@" "'" "~" "#" "|"  '< "," ">" "." ))

(define us-pass(list 'ali   'ahmet  'ayşe))
(define (member? x list)
     (if (null? list) #f                             
         (if (equal? x (car list))  #t                  
              (member? x (cdr list))))) 


(define (is-in-list k a)
    (if (member '(string-ref k a) pool) true false )) 





(define (take-pass pass)
  (if (>=(string-length pass) 15) (let ([password pass] [ name (car us-pass)]) (list name pass)) "The password must be longer than 15 characters") 
  (let ([counter 0]) 
  (if (is-in-list pass counter) ((+ counter 1)(is-in-list pass counter)) "Invalid characters")))
(定义池(列出'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'T'U'V'W'C'D'E'Z'A'B'C'D'E'F'G'I'J'K'L'M'N'O'P'R'Q'T'T'U'V'W'X'Y'Z 1 2 3 4 4 4 5 7 7'=“{9 0'?!”!“%!”、“^'''''''''''''.-'-''-''''''.-“[”,“:”,“:”,“,“:”,“,”
(定义美国通行证(列出“阿里”艾哈迈特“艾希礼”)
(定义(成员?x列表)
(如果(空?列表)#f
(如果(等于?x(车辆列表))#t
(成员?x(cdr列表(()())))
(定义(在列表k a中)
(如果(成员)(字符串引用k a)池为真或假)
(定义(通过)
(如果(>=(字符串长度通行证)15)(让([密码通行证][姓名(汽车美国通行证)])(名单姓名通行证))“密码必须超过15个字符”)
(让([计数器0])
(如果(在列表传递计数器中)(+计数器1)(在列表传递计数器中))“无效字符”))

但这似乎没有帮助。如果有人能帮助我,我会很高兴的。

你应该解释一下你期望发生什么,而不是发生什么,“没有帮助”是,呃,没有帮助的;)在快速浏览中发现了许多错误。1)
”(string ref k a)
只是一个文本值,因此它不引用给定字符串中的值。2)
(member'(string ref k a)pool)
(可能)尝试检查值是否在pool中,但是
string ref
返回字符并且
pool
包含符号和字符串。所以它永远不会返回真正的值。3)
如果
中的
表达式似乎使用错误。