clojure에서 완전히 익숙하지 않고 대학 이후에 프로그래밍 기능이 전혀 없기 때문에 clojure 구문을 이해하기 위해 몇 가지 예제 코드를 해석하려고합니다.함수 매개 변수로 Clojure 벡터
필자는 피보나치 (Fibonacci, https://gist.github.com/pcalcao/ea4176719d778ea3ab9e)의 여러 버전을 코딩하여 시작했지만, 더 복잡한 형태를 완전히 이해한다고 말할 수는 없습니다. 예를 들어
이 : 난 정말이 코드의 가장 안쪽 부분을 이해하는 데 어려움을 겪고있어
(defn fib_map [n]
(last (take (+ n 1)
(map first (iterate (fn [[a b]] [b (+ a b)]) [0 1])))))
: 나의 이해에서, 이제
fn [[a b]] [b (+ a b)]
, 우리는 익명 함수를 만드는 하나의 매개 변수 인 두 개의 값을 가진 벡터 (이것은 파기입니다, 맞습니까?)를 반환하고 다른 벡터를 반환합니다.
fn [a b] [b (+ a b)]
이 동일합니다
자, 대신, 우리는이 작업을 수행 할 이유는 무엇인가? 아니면 단순히 우리의 익명의 함수를 iterate
에서 사용할 "특수 효과"라는 단일 매개 변수로 받습니까?
미안 내가 완전히 말한 것처럼,하지만 내가 말했듯이, Lisp과 같은 언어는 아직 내 장점이 아니다.
자세한 설명을 위해 받아 들여졌습니다. 또한 * 벡터의 * 처음 두 값은 내가 더 많은 요소를 가진 콜을 통과하면 나머지는 무시된다는 것을 알게되었습니다. 나는 그것을 알지 못했습니다! 좋은. – pcalcao