2013-12-26 2 views
1

Я хочу сделать что-то вроде этого:Как создать список ассоциаций в Emacs?

'((function1 . '(lambda (args) "DOCSTRING")) 
    (function2 . '(lambda (args) "DOCSTRING"))) 

Но «точка» просто открывает то, что стоит за ним:

((function1 quote (lambda (args) "DOCSTRING")) (function2 quote (lambda (args) "DOCSTRING")))

Я знаю, что это работает, как и должно быть, но как это исправить в этом случае? Чтобы я мог получить функции с помощью ключа.

ответ

1

lambda автопортреты цитаты:

(setq falist 
     '((function1 . (lambda (args) "DOCSTRING" 1)) 
     (function2 . (lambda (args) "DOCSTRING" 2)))) 
(funcall (cdr (assoc 'function2 falist)) 1) 
; => 2 
+0

спасибо, можно увидеть теперь, что проблема была не в этой части моего кода. (Я также пробовал без qoutes) – Sergey

+0

ничего себе, это * так странно. elisp странно. –

+0

@WillNess, это совсем неплохо, на самом деле имеет смысл для меня. Сравнение с https://www.destroyallsoftware.com/talks/wat –

Смежные вопросы