如何 return 在方案函数中创建列表?

How do I return a list created inside a scheme function?

我正在尝试查找传递给翻译函数的列表的原子,将原子翻译成适当的数字,并输出一个新列表。我收到以下错误:

outlist: unbound identifier in module in: outlist

这是我的代码:

#lang racket
(define chinese '(ling yi er san si wu liu qi ba jiu shi))
(define english '(zero one two three four five six seven eight nine ten))

(define (translate alist)
  (cond
     ((eq? "zero" (car alist) cons ('(0)) outlist)
  )
 (translate (cdr alist))))

(define list '(zero))
(translate list)

我正在寻找的是通过翻译包含 "one two three" 等的列表,并从翻译中获取包含“1 2 3”的列表..

我也试过添加

 (define outlist '())

在翻译函数内部并抛出以下错误:

application: not a procedure;
expected a procedure that can be applied to arguments
given: '(0)
arguments...: [none]

非常感谢任何帮助!其实我应该做的是用英文和中文查找用户生成列表的字符串,然后进行翻译,所以如果你能详细说明如何做到这一点,那也会有所帮助。

没有名为 outlist 的参数或变量,您应该 构建 输出列表 - 并记住编写正确的基数递归的情况。

此外,您的代码存在多个语法错误,请确保您了解如何在 Scheme 中调用函数。你应该尝试这样的事情:

(define (translate alist)
  (cond
    ((null? alist) '())
    ((eq? 'zero (car alist))
     (cons 0 (translate (cdr alist))))
    ((eq? 'one (car alist))
     (cons 1 (translate (cdr alist))))
    ... and so on ...))

它按预期工作:

(translate '(zero one))
=> '(0 1)