목록함수 (3)
Dharma
CLisp 이나 C++ 에서는 쉽게 설정하는 함수 인자 기본 값 (Default) 설정하는 방법에 관한 예제입니다. 일단 쉽게 설정하는 방법이 없는 듯 합니다. link | changes view sourceprint? 1 user=> (defn bar 2 ([a b] (bar a b 100)) 3 ([a b c] (* a b c))) 4 #'user/bar 5 user=> (bar 5 6) 6 3000 7 user=> (bar 5 6 2) 8 60 이 와 같은 식으로 가장 인자 수가 많은 함수를 내부에서 호출하는 형식으로 꾸며줍니다. 그 외에 다른 방식으로는 :keyword 형식으로 호출하는 등등이 있으나 위에 쓰여지는 방법이 그나마 다른 언어(Language)에 익숙한 방법이라 사료됩니다. defn ..
lein 을 이용한 프로젝트 생성시 요즘 clojure 버젼이 1.4.0 이 기본인 것처럼 만들어 집니다. 아무 생각 없이 slime 을 연결해서 코딩을 시작하면 무엇인지 이상한 기분이 들기 시작합니다. 바로 doc 함수 입니다. doc 함수가 동작을 안합니다. "1.2.1" 버젼에서는 제대로 동작했는데 갑자기 동작안하기 시작합니다. 정확히는 "1.3.x" 와 "1.4.0" 에서 동작을 안합니다. REPL 상에서 user> (use 'clojure.repl) 만 해주면 그 다음부터 사용이 됩니다.
프로그래밍을 하다보면 수학적 귀납법의 원리를 이용하여 함수가 제대로 작성 됐는지 검증하면 편할 때가 많습니다. 수학적 귀납법 자연수 n과 관련된 명제 P(n)을 증명하려고 할 때, 다음 두 가지만 증명하면 된다. 1) n=1일 때, 참이다. 2) n=k일 때, 참이라고 가정하면 n=k+1일 때도 참이다. 1)과 2)에 따라서 모든 자연수일때 명제가 성립한다. 살아오면서 수학과 프로그래밍에 대해서는 별다른 연관성을 못 느끼고 있었습니다. '수학적 사고나 논리력 증대가 프로그래밍에 도움이 되는 것이겠지' 정도로만 치부하고 살았는데, 최근에 결국 프로그램의 대부분이 아무리 많은 데이터를 다루더라도 index 형태로 처리하게 된다면, 함수를 작성할 때 귀납법을 고려해서 작성하면 좋구나 하고 느낄 때가 있었습니다..