将可变对插入可变列表中

时间:2011-01-17 09:33:39

标签: lisp scheme racket

如何将可变对推入堆栈,以便我只创建一个堆栈。我有一些代码可以工作,但在列表中的列表中创建列表....这是我认为应该工作,但会抛出错误。

(define func (arg1 arg2 arg3) // Where arg3 is an empty list
    (mappend (mcons arg1 arg2) arg3))

上面的代码抱怨并说:“mcar:期望类型的论点;给出...... 任何人都可以告诉我如何得到一个看起来像这样的结果,:( list(arg1 arg2)                                                                      (arg#arg#)                                                                      ...)

2 个答案:

答案 0 :(得分:1)

(mcons (mcons arg1 arg2) arg3)

或(你的问题不是很清楚)

(cons (list 'a 'b) '())

此外,您的问题中的语法没有任何意义。它应该像

(define func (lambda (arg1 arg2 arg3)
                ...body...))

答案 1 :(得分:1)

我认为你想要的功能是:

  (define (f a b c)
    (mlist (mlist a b) c))

这会产生以下结果:

  > (f 3 4 (mlist 4 5))
  {{3 4} {4 5}}