Мне тяжело читать/понимать синтаксис инструкции pcase
в emacs-lisp. Пожалуйста, помогите мне выяснить, как сделать следующее действительное заявление pcase
.emacs lisp pcase error
(defun execute-play (str)
(setq parse (mapcar (lambda (s) (split-string s ":")) (split-string str " ")))
(pcase (string-to-char (caar parse))``
((pred (<= (string-to-char "5"))) (t-to-pparse))
((pred (<= (string-to-char "d"))) (f-to-p parse))
((string-to-char "w") (w-to-p parse))
(_ "bad input")))
Обратите внимание, что типичный ввод «1: 2 3» или «a 5».
Ошибка из Emacs, что я получаю это: 'edebug-signal: Unknown upattern '(string-to-char w)'
Это второй по последнему делу, - я думал, что это будет просто соответствовать значению (caar parse)
против (string-to-char "w")
, если он уже не соответствует дело до этого. Обратите внимание, что я также попытался заменить (string-to-char "w")
с (SELFQUOTING (string-to-char "w"))
поскольку документация говорит, что: SELFQUOTING matches itself. This includes keywords, numbers, and strings.
Пожалуйста, помогите мне получить эту EMACS-лисповского pcase заявления работы - Спасибо за помощь!
Не задавайте 'setq' для переменной (например,' parse'), которую вы не объявили локально. Вместо этого используйте 'let'. – Stefan