[英]emacs lisp pcase error
我很難閱讀/理解emacs-lisp中pcase
語句的語法。 請幫助我找出如何使以下有效的pcase
語句。
(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"))
替換(string-to-char "w")
,因為文檔說: SELFQUOTING matches itself. This includes keywords, numbers, and strings.
SELFQUOTING matches itself. This includes keywords, numbers, and strings.
請幫助我使此emacs-lisp pcase語句正常工作-感謝您的所有幫助!
您的代碼存在多個問題:
pcase
-條件代碼最好使用cond
編寫。 ?5
,則第一個子句將匹配,因此其余子句將永遠不匹配。 pcase
似乎不支持與評估值匹配,因此應編寫第三個子句(pred (equal (string-to-char "0")))
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.