如何将函数应用于方案或球拍中的每个子列表?

X10*_*10D 1 scheme functional-programming racket

如何获得每个子列表的产品?尝试:

(apply map * '((1 2) (3 4)))
Run Code Online (Sandbox Code Playgroud)

但它返回:'(3 8),而它应该返回'(2 12)

Tha*_*you 6

您可以使用模式匹配

(map (? (xs) (match xs [(list a b) (* a b)]))
     '((1 2) (3 4)))
Run Code Online (Sandbox Code Playgroud)

...或者您可以使用map适用*于子列表的lambda

(map (? (xs) (apply * xs))
     '((1 2) (3 4)))
Run Code Online (Sandbox Code Playgroud)

...或者你可以curry用来取代lambda

(map (curry apply *) '((1 2) (3 4)))
Run Code Online (Sandbox Code Playgroud)