방금 LFE로 시작 했으므로이 책을 읽는 동안 (SICP, LFE 버전) 책에서 몇 가지 예제를 시험해 보았습니다. 운동 1.4에서 나는 식 #'+/2
과 #'-/2
을 봅니다.Lisp에서 +와 - 연산자의 결합 성 얼랭 (Flavored Erlang)
그래서 REPL (funcall #'+/2 1 2)
을 입력하고 (예상대로) 3
을 얻습니다. 마찬가지로 (funcall #'+/1 1)
은 1
이됩니다. 그러나 (funcall #'+/3 1 2 3)
은 오류를 발생시킵니다. 왜 이런거야? 나는 물론 (funcall #'+/2 1 (funcall #' +/2 2 3))
을 할 수는 있지만 실제로는 #'+/3
이 잘못된 것처럼 보이는 이유를 이해하고 싶습니다.
마지막으로, 내 자신의 기능을 구현하는 경우 약간이 방법으로 임의의 수의 인수를 허용하는 기능을 구현하는 방법 (funcall #'FUNC/arity ....
). 이 질문이 별도의 질문으로 여겨지면 느낄 수없는 용어로 나를 도와주십시오.
예, 나는 또한 같은 결론에 도달하기 시작했습니다. 나는 두 개의 인수만을 취하는 프리미티브 추가 함수가 있다는 인상을 받았고 + 함수는 인수 목록을 받아들이고 반복적으로 처리하도록 구현되었습니다. 아마, 그 재귀의 기본 경우 (단일 요소가있는 목록)는 단일 요소 자체를 반환하기 위해 작성되므로 # '+/1이 작동합니다. 또는, 다른 요소가있는 두 개의 함수가 있습니다. 하나는 단일 요소를 가져 와서 반환하고 다른 하나는 두 개를 취합니다 (그리고 이전 요소를 재귀 적으로 호출합니다). 나는 Erlang에 대해서도 많이 알지 못한다. – Jordan