나는 문제가 생겼어요 :emacs lisp 언어에서 lambda를 올바르게 사용하는 방법은 무엇입니까? 나는 다음과 같은 코드를 실행하려고 할 때
잘못된 기능 : (람다 (람다 (N) 내가 MX의 ielm으로 실행하는 경우
(defun sum1
(lambda (n)
(+ n 1)))
는 다음 메시지를 표시 (+ n은 1)) 무기 호)
내가 분명히 있는지 확인하고 싶습니다나는 다음과 같은 코드를 사용하는 반면 :
(defun sum1(n)
(+ n 1))
을 0
이 경우에 람다를 정의하는 방법을 알고 싶습니다.
모든 정보가 허용됩니다. 새내기입니다.
당신은 macroexpand'defun'을 할 수 있습니다.'defalias'sum1 (lambda (n) (+ n1)))' – jenesaisquoi
람다는 익명 함수를위한 것입니다. 당신이 묻고있는 것이 분명하지 않습니다. 예를 들어 가질 수 있습니다. '(defun make-adder (n) (lambda (x) (+ x n)))'은 숫자에 n을 더하는 함수를 반환합니다. 변수의 값으로 익명의 함수를 사용할 수 있습니다 :'(let ((adder (x) (+ x 2)))))'. –
나는 이것에 초보자에게 적합한 답변을 쓰려고했지만 진짜 대답은 다음과 같음을 깨달았다. lisp을 배우고 싶다면 * elisp *로 시작하지 마라. 대신 Common Lisp (elisp보다 전통적이지만 많이 정렬 된 lisp), Scheme (더 현대적인 lisp) 또는 다른 것 (Clojure?)으로 시작하십시오. elisp에는 아무런 문제가 없지만 실제로는 구식입니다 : 그것이하는 일은 좋지만 Lisp을 배우는 방법은 여러분을 혼란스럽게 할뿐입니다. (만약 당신이하고 싶은 것이 emacs를 해킹하는 것이라면, elisp은 물론 시작할 수있는 좋은 곳입니다.) – tfb