%PDF- %PDF-
Direktori : /usr/local/share/emacs/27.2/lisp/emacs-lisp/ |
Current File : //usr/local/share/emacs/27.2/lisp/emacs-lisp/pcase.elc |
;ELC ;;; Compiled ;;; in Emacs version 27.2 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require 'macroexp) (defconst pcase--memoize (make-hash-table :weakness 'key :test 'eq)) (defconst pcase--dontcare-upats '(t _ pcase--dontcare)) (defvar pcase--dontwarn-upats '(pcase--dontcare)) (byte-code "\300\301\302\303#\210\300\304\302\305#\210\300\306\302\307#\207" [put pcase-PAT edebug-form-spec (&or symbolp ("or" &rest pcase-PAT) ("and" &rest pcase-PAT) ("guard" form) ("let" pcase-PAT form) ("pred" pcase-FUN) ("app" pcase-FUN pcase-PAT) pcase-MACRO sexp) pcase-FUN (&or lambda-expr (functionp &rest form) sexp) pcase-MACRO pcase--edebug-match-macro] 4) #@15 (fn CURSOR) (defalias 'pcase--edebug-match-macro #[257 "\300C\301\302\303\304\305\306!\307\"\310\311%!\210\312\313\242B\"\207" [nil mapatoms make-byte-code 257 "\211\301N\211\205 \302!\205 \300\303!\302!B\300\242B\240\207" vconcat vector [pcase-macroexpander get-edebug-spec symbol-name] 6 "\n\n(fn S)" edebug-match &or] 9 (#$ . 973)]) #@1734 Evaluate EXP to get EXPVAL; try passing control to one of CASES. CASES is a list of elements of the form (PATTERN CODE...). For the first CASE whose PATTERN "matches" EXPVAL, evaluate its CODE..., and return the value of the last form. If no CASE has a PATTERN that matches, return nil. Each PATTERN expands, in essence, to a predicate to call on EXPVAL. When the return value of that call is non-nil, PATTERN matches. PATTERN can take one of the forms: _ matches anything. \='VAL matches if EXPVAL is `equal' to VAL. KEYWORD shorthand for \='KEYWORD INTEGER shorthand for \='INTEGER STRING shorthand for \='STRING SYMBOL matches anything and binds it to SYMBOL. If a SYMBOL is used twice in the same pattern the second occurrence becomes an `eq'uality test. (pred FUN) matches if FUN called on EXPVAL returns non-nil. (app FUN PAT) matches if FUN called on EXPVAL matches PAT. (guard BOOLEXP) matches if BOOLEXP evaluates to non-nil. (let PAT EXPR) matches if EXPR matches PAT. (and PAT...) matches if all the patterns match. (or PAT...) matches if any of the patterns matches. FUN in `pred' and `app' can take one of the forms: SYMBOL or (lambda ARGS BODY) call it with one argument (F ARG1 .. ARGn) call F with ARG1..ARGn and EXPVAL as n+1'th argument FUN, BOOLEXP, EXPR, and subsequent PAT can refer to variables bound earlier in the pattern by a SYMBOL pattern. Additional patterns can be defined using `pcase-defmacro'. See Info node `(elisp) Pattern-Matching Conditional' in the Emacs Lisp manual for more information and examples. (fn EXP &rest CASES) (defalias 'pcase '(macro . #[385 "\301@\"@\232\203 A@\232\203 \211AA\202, \302\"\303@BB#\210\211\262\207" [pcase--memoize gethash pcase--expand puthash] 9 (#$ . 1328)])) (byte-code "\300\301\302\303#\304\301\305\306#\210\304\301\307\310#\207" [function-put pcase lisp-indent-function 1 put edebug-form-spec (form &rest (pcase-PAT body)) function-documentation (pcase--make-docstring)] 5) (defalias 'pcase--make-docstring #[0 "\300\301K\302\"\303\301\"\304\305!\210\306\307!r\211q\210\310\311\312\313\314!\315\"\316$\216A\206&