簡體   English   中英

emacs lisp pcase錯誤

[英]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語句正常工作-感謝您的所有幫助!

您的代碼存在多個問題:

  1. 由於您無需在模式中進行任何綁定或解構,因此不需要pcase -條件代碼最好使用cond編寫。
  2. 在第3行的末尾有一對虛假的反引號。
  3. 您似乎顛倒了前兩個測試-如果表達式大於?5 ,則第一個子句將匹配,因此其余子句將永遠不匹配。
  4. pcase似乎不支持與評估值匹配,因此應編寫第三個子句(pred (equal (string-to-char "0")))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM