Как получить продукт каждого подсписника? Пробовал:Как применить функцию к каждому подсписку в схеме или ракетке?
(apply map * '((1 2) (3 4)))
но он возвращает: '(3 8) в то время как он должен вернуть' (2 12)
Как получить продукт каждого подсписника? Пробовал:Как применить функцию к каждому подсписку в схеме или ракетке?
(apply map * '((1 2) (3 4)))
но он возвращает: '(3 8) в то время как он должен вернуть' (2 12)
Вы можете использовать шаблон, соответствующий
(map (λ (xs) (match xs [(list a b) (* a b)]))
'((1 2) (3 4)))
... Или вы может использовать map
с лямбдой, которая применяет *
, к подписям
(map (λ (xs) (apply * xs))
'((1 2) (3 4)))
... Или вы можете использовать curry
заменить лямбда
(map (curry apply *) '((1 2) (3 4)))
excelent :) Вы могли бы порекомендовать ресурс по шаблону? и объяснить линию карри? – X10D
петля может быть записана с "именем": пусть
(define (f l)
(let loop ((l l)
(ol '()))
(cond
[(empty? l) (reverse ol)]
[else (loop (rest l)
(cons (apply * (first l)) ol))])))
(f '((1 2) (3 4)))
Выход:
'(2 12)
Try '(map (curry apply *) '((1 2) (3 4))) 'вместо. –
thx :) но как это работает? :) – X10D