代码之家  ›  专栏  ›  技术社区  ›  Cam

在Scheme中作为参数列出

  •  2
  • Cam  · 技术社区  · 14 年前

    (define  (foo a b c)
      (list (* 2 a ) (* 2 b) (* 2 c)))
    

    我想做的是创建另一个接受列表的过程,并使用列表元素作为参数调用foo,如下所示:

    (define (fooInterface myList)
      ...)
    
    (fooInterface (list 1 2 3))
    

    3 回复  |  直到 13 年前
        1
  •  11
  •   Archy Will He 何魏奇    9 年前

    你要找的东西叫做 apply .

        2
  •  0
  •   Nilesh    12 年前

    (define foo2
    
    (lambda (x)
      (* x 2)))
    
    (map foo2 '(1 2 3 4 5))
    
        3
  •  0
  •   snario    11 年前

    一些实现来做你想做的。。。

    (define (foo lst)
      (map (lambda (x) (* 2 x)) lst))
    
    (define (foo lst)
      (apply (lambda args (map (lambda (x) (* x 2)) args)) lst))
    
    (define foo
      (lambda args (map (lambda (x) (* x 2)) args))
    

    只是为了好玩,很酷的使用 apply

    (define grid     '((1 2 3) 
                       (4 5 6) 
                       (7 8 9)
    ))
    

    那么,

    (apply map list grid)
    => '((1 4 7)
         (2 5 8)
         (3 6 9))