2016-10-09 8 views
0

필자는 함수 (f a b c)에 적용해야하는 목록 (1 2 3)을 가지고 있습니다.목록의 각 항목을 스키마의 함수에 대한 해당 인수로 적용하는 방법

첫 번째 부분은 위 목록을 만들기 위해 두 목록을 병합하는 것이 었습니다. 이제는 그 숫자를 인수로 연결해야합니다. 어떻게해야할지 모르겠습니다. 적용 또는지도 사용에 대해 생각하고 있었지만, 어떻게 작동하는지 또는 올바른 방법인지 확신 할 수 없습니다.

감사합니다.

+0

예, '적용'해야합니다. 너 해봤 어? 작동합니까? 시도 코드를 게시하십시오. – Bergi

+0

적용하십시오. 목록은 함수의 결과이므로, "let"을 사용하여 목록을 "보류"한 다음 적용해야했습니다. – User9193

+0

let (: apply proc (someproc args ...))가 없으면 그것을 할 수 있습니다. 프로 시저가리스트로 평가되면 작동합니다. – Sylwester

답변

1

당신은 절차 apply를 찾고 있습니다 :

(+ 1 2 3) ; ==> 6 

(let ((lst '(1 2 3))) 
    (apply + lst)) ; ==> 6 

또한 예 .. 목록하기 전에 추가 인수를 취할 수 있습니다 적용합니다.

(let ((lst '(1 2 3))) 
    (apply + 2 lst)) ; ==> 8, same as (+ 2 1 2 3) 

Scheme의 +도 변수입니다. 그것은뿐만 아니라 당신의 let에 결합 될 수 있었다 :

(let ((lst '(1 2 3)) 
     (+ (lambda args (apply * args)))) 
    (apply + 2 lst)) ; ==> 12, same as (* 2 1 2 3) 

그래서 예를 들면 .. 당신은 동일한 데이터 집합에 여러 작업을 수행 할 상상한다. x, y, z를이 목록에 적용한 결과는 무엇입니까?

(let ((lst '(4 3 2)) 
     (procs (list + - * /))) 
    (map (lambda (proc) 
     (apply proc lst)) 
     procs)) 

; ==> (9 -1 24 2/3), same as (list (apply + lst) (apply - lst) ...) 
+0

모든 예제를 이용해 주셔서 감사합니다. – User9193