필자는 함수 (f a b c)에 적용해야하는 목록 (1 2 3)을 가지고 있습니다.목록의 각 항목을 스키마의 함수에 대한 해당 인수로 적용하는 방법
첫 번째 부분은 위 목록을 만들기 위해 두 목록을 병합하는 것이 었습니다. 이제는 그 숫자를 인수로 연결해야합니다. 어떻게해야할지 모르겠습니다. 적용 또는지도 사용에 대해 생각하고 있었지만, 어떻게 작동하는지 또는 올바른 방법인지 확신 할 수 없습니다.
감사합니다.
필자는 함수 (f a b c)에 적용해야하는 목록 (1 2 3)을 가지고 있습니다.목록의 각 항목을 스키마의 함수에 대한 해당 인수로 적용하는 방법
첫 번째 부분은 위 목록을 만들기 위해 두 목록을 병합하는 것이 었습니다. 이제는 그 숫자를 인수로 연결해야합니다. 어떻게해야할지 모르겠습니다. 적용 또는지도 사용에 대해 생각하고 있었지만, 어떻게 작동하는지 또는 올바른 방법인지 확신 할 수 없습니다.
감사합니다.
당신은 절차 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) ...)
모든 예제를 이용해 주셔서 감사합니다. – User9193
예, '적용'해야합니다. 너 해봤 어? 작동합니까? 시도 코드를 게시하십시오. – Bergi
적용하십시오. 목록은 함수의 결과이므로, "let"을 사용하여 목록을 "보류"한 다음 적용해야했습니다. – User9193
let (: apply proc (someproc args ...))가 없으면 그것을 할 수 있습니다. 프로 시저가리스트로 평가되면 작동합니다. – Sylwester