Вы, похоже, неправильно понимаете, что означают аргументы lambda
в map
. Аргументы lambda
не являются списками, они являются элементами списков.
В обычной карте с одним аргументом это не так:
(map (lambda (list1)
....)
(list 1 2 3 4 5))
Но на самом деле:
(map (lambda (elem1) ; elem1 is an element of the list
....)
(list 1 2 3 4 5))
То же самое с картой с двумя аргументами. Аргументами лямбды являются элементы их соответствующих списков:
(map (lambda (elem1 elem2) ; elem1 is an element of the first list, elem2 is an element of the second list
....)
(list 1 2 3 4 5)
(list 6 7 8 9 10))
В вашем примере два списка [Listof Number]
, поэтому аргументы для lambda
: Number
.
(map (lambda (elem1 elem2) ; elem1 : Number, elem2 : Number
; here you have two numbers, so you can multiply them,
; but `map`-ing over the numbers doesn't make sense
(* elem1 elem2))
(list 1 2 3 4 5) ; [Listof Number]
(list 6 7 8 9 10)) ; [Listof Number]