%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/local/share/emacs/27.2/lisp/emacs-lisp/
Upload File :
Create Path :
Current File : //usr/local/share/emacs/27.2/lisp/emacs-lisp/generator.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 'cl-lib)
(defvar cps--bindings nil)
(defvar cps--states nil)
(defvar cps--value-symbol nil)
(defvar cps--state-symbol nil)
(defvar cps--cleanup-table-symbol nil)
(defvar cps--cleanup-function nil)
#@23 

(fn FMT &rest ARGS)
(defalias 'cps--gensym '(macro . #[385 "\300\301BBD\207" [gensym format] 6 (#$ . 614)]))
#@127 List of functions to apply to atomic forms.
These are transformer functions applied to atomic forms evaluated
in CPS context.
(defvar cps--dynamic-wrappers '(identity) (#$ . 734))
#@73 List of special forms treated just like ordinary function applications.
(defconst cps-standard-special-forms '(setq setq-default throw interactive) (#$ . 920))
#@24 

(fn FUNC &rest ARGS)
(defalias 'cps--trace-funcall #[385 "\300\301#\210\302\"\300\303#\210\211\207" [message "%S: args=%S" apply "%S: result=%S"] 7 (#$ . 1086)])
#@23 

(fn FMT &rest ARGS)
(defalias 'cps--trace #[385 "\300\301\302\303P#!\207" [princ apply format "\n"] 7 (#$ . 1262)])
#@71 Non-nil if and only if DEFINITION is a special form.

(fn DEFINITION)
(defalias 'cps--special-form-p #[257 "\2119\203\300!\203\301!\262\302!\205\303!A\304=\207" [fboundp indirect-function subrp subr-arity unevalled] 3 (#$ . 1388)])
#@17 

(fn FUNCTION)
(defalias 'cps--define-unsupported '(macro . #[257 "\300\301\302\303\"!\304\305EE\207" [defun intern format "cps--transform-%s" error "%s not supported in generators"] 6 (#$ . 1637)]))
#@518 Evaluate BODY with WRAPPER added to the stack of atomic-form wrappers.
WRAPPER is a function that takes an atomic form and returns a wrapped form.

Whenever we generate an atomic form (i.e., a form that can't
`iter-yield'), we first (before actually inserting that form in our
generated code) pass that form through all the transformer
functions.  We use this facility to wrap forms that can transfer
control flow non-locally in goo that diverts this control flow to
the CPS state machinery.

(fn WRAPPER &rest BODY)
(defalias 'cps--with-value-wrapper '(macro . #[385 "\300\301\302\303BBDCBB\207" [let cps--dynamic-wrappers cons (cps--dynamic-wrappers)] 7 (#$ . 1847)]))
(byte-code "\300\301\302\303#\300\207" [function-put cps--with-value-wrapper lisp-indent-function 1] 4)
#@31 

(fn DYNAMIC-VAR STATIC-VAR)
(defalias 'cps--make-dynamic-binding-wrapper #[514 "\204\301\300!\210\302\303\304\305\306\"\307\"\310\311%\207" [lexical-binding cl--assertion-failed make-byte-code 257 "\302\300\301DC\303\304\301\300EEE\207" vconcat vector [let unwind-protect setf] 8 "\n\n(fn FORM)"] 9 (#$ . 2630)])
#@136 Evaluate BODY such that generated atomic evaluations run with
DYNAMIC-VAR bound to STATIC-VAR.

(fn DYNAMIC-VAR STATIC-VAR &rest BODY)
(defalias 'cps--with-dynamic-binding '(macro . #[642 "\300\301EBB\207" [cps--with-value-wrapper cps--make-dynamic-binding-wrapper] 7 (#$ . 2960)]))
(byte-code "\300\301\302\303#\300\207" [function-put cps--with-dynamic-binding lisp-indent-function 2] 4)
#@87 Create a new CPS state of KIND with BODY and return the state's name.

(fn KIND BODY)
(defalias 'cps--add-state #[514 "\303\304\305\"!\211E	B\211\nB\211\207" [cps--cleanup-function cps--states cps--bindings gensym format "cps-state-%s-"] 6 (#$ . 3358)])
(byte-code "\300\301\302\303#\300\207" [function-put cps--add-state lisp-indent-function 1] 4)
#@22 

(fn ORIGINAL-NAME)
(defalias 'cps--add-binding #[257 "\301\302\211\303\"!!B\211@\207" [cps--bindings gensym format "cps-binding-%s-"] 6 (#$ . 3718)])
#@13 

(fn FORM)
(defalias 'cps--find-special-form-handler #[257 "\300\301\242\"\302!\303!\205\211\207" [format "cps--transform-%s" intern-soft fboundp] 5 (#$ . 3879)])
#@73 When non-nil, always rewrite forms into CPS even when they don't yield.
(defvar cps-inhibit-atomic-optimization nil (#$ . 4054))
#@61 Return nil if FORM can yield, non-nil otherwise.

(fn FORM)
(defalias 'cps--atomic-p #[257 "?\205\303\304\305\306E\n\"\210	)?\207" [cps-inhibit-atomic-optimization cps--yield-seen macroexpand-all-environment nil macroexpand-all cl-macrolet ((cps-internal-yield (_val) (setf cps--yield-seen t)))] 5 (#$ . 4189)])
#@24 

(fn FORM NEXT-STATE)
(defalias 'cps--make-atomic-state #[514 "\304\305EE	\306:\203@\262\211!\262A\262\202	\266\306\307\310\305E\")\207" [cps--state-symbol cps--dynamic-wrappers cps--cleanup-function cps--value-symbol prog1 setf nil cps--add-state "atom"] 8 (#$ . 4512)])
#@24 

(fn FORM NEXT-STATE)
(defalias 'cps--transform-1 #[514 "\306\307\310!\203\311\"\202d\312\232\203\313\314\"\202d:\203A@\211\315\267\202A\211:\203b\211@A\211\204C\313	\"\262\202]\211\313\316\317\320\321	\313\322B\"FE\"\"\266\202\266\202\202\323\267\202\210\313\324\"\202\313\324\"\202\313\324\"\202\313\324\"\202\325!\262\203\336\211\n>?\262\203\243\"\202\211\211\324\314:\203\300@\262:?\211\262\203\300A\262\202\247\211\205\305\314\266\203?\262\203\325#\202\311\"\202\211\211\324\314:\203\373@\262:?\211\262\203\373A\262\202\342\211\205\314\266\203?\262\203#\202\311\"\262\202<A\211:\203R\211@A\211\326\327!\313\316\330\320	\331	\"B\313\332\fB\")\257\"\"\262\266\202\266\202\202\333\267\202x\313\324\"\202\313\324\"\202\313\324\"\202\313\324\"\202\325!\262\203\316\211\n>?\262\203\223\"\202\211\211\324\314:\203\260@\262:?\211\262\203\260A\262\202\227\211\205\265\314\266\203?\262\203\305#\202\311\"\202\211\211\324\314:\203\353@\262:?\211\262\203\353A\262\202\322\211\205\360\314\266\203?\262\203#\202\311\"\262\202<\334\232\203\313\324\"\202<\211\335\267\202\375A\211:\203\211@\211:\203e\211@A\211\204IA\211\313\336\337BE\f\"\266\202\262\202`A\211\313\321\332B\337BF
\"\266\203\262\266\202\202\340\267\202\204\313\324\"\202\313\324\"\202\313\324\"\202\325!\262\203\333\211\n>?\262\203\237\"\202\211\324\314:\203\274@\262:?\211\262\203\274A\262\202\243\211\205\301\314\266\203?\262\203\322#\202\311\"\202\211\324\314:\203\370@\262:?\211\262\203\370A\262\202\337\211\205\375\314\266\203?\262\203#\202\311\"\262\202\305\341\267\2027\313\324\"\202\305\313\324\"\202\305\313\324\"\202\305\325!\262\203\215\211\n>?\262\203R\"\202\305\211\211\324\314:\203o@\262:?\211\262\203oA\262\202V\211\205t\314\266\203?\262\203\204#\202\305\311\"\202\305\211\211\324\314:\203\252@\262:?\211\262\203\252A\262\202\221\211\205\257\314\266\203?\262\203\277#\202\305\311\"\262\202<A\211:\203\255\211@A\211:\203\367\211@A\211\342
#B\313
\")\266\203\266\202\202\250\343\267\202\313\324\"\202\250\313\324\"\202\250\313\324\"\202\250\325!\262\203n\211\n>?\262\2031\"\202\250\211\324\314:\203N@\262:?\211\262\203NA\262\2025\211\205S\314\266\203?\262\203e#\202\250\311\"\202\250\211\324\314:\203\213@\262:?\211\262\203\213A\262\202r\211\205\220\314\266\203?\262\203\242#\202\250\311\"\266\202\202Y\344\267\202\313\313\324\"\202Y\313\324\"\202Y\313\324\"\202Y\325!\262\203!\211\n>?\262\203\346\"\202Y\211\211\324\314:\203@\262:?\211\262\203A\262\202\352\211\205\314\266\203?\262\203#\202Y\311\"\202Y\211\211\324\314:\203>@\262:?\211\262\203>A\262\202%\211\205C\314\266\203?\262\203S#\202Y\311\"\262\202<A\211:\203L\211@A\211:\203\226\211@A\211\313\316\345\320\321	\313\n\"\313\332
B\"FE\"\"\266\203\266\202\202G\346\267\202\265\313\324\"\202G\313\324\"\202G\313\324\"\202G\325!\262\203
\211\n>?\262\203\320\"\202G\211\324\314:\203\355@\262:?\211\262\203\355A\262\202\324\211\205\362\314\266\203?\262\203#\202G\311\"\202G\211\324\314:\203*@\262:?\211\262\203*A\262\202\211\205/\314\266\203?\262\203A#\202G\311\"\266\202\202\370\347\267\202j\313\324\"\202\370\313\324\"\202\370\313\324\"\202\370\325!\262\203\300\211\n>?\262\203\205\"\202\370\211\211\324\314:\203\242@\262:?\211\262\203\242A\262\202\211\211\205\247\314\266\203?\262\203\267#\202\370\311\"\202\370\211\211\324\314:\203\335@\262:?\211\262\203\335A\262\202\304\211\205\342\314\266\203?\262\203\362#\202\370\311\"\262\202<\350\232\203\n\313\324\"\202<\211\351=\203\353A\211:\203B\211@A\211\204,\313\n\"\266\202\202=\211	\313\313\351B
\"\"\266\203\266\202\202\346\352\267\202X\313\324\"\202\346\313\324\"\202\346\325!\262\203\256\211\n>?\262\203s\"\202\346\211\211\324\314:\203\220@\262:?\211\262\203\220A\262\202w\211\205\225\314\266\203?\262\203\245#\202\346\311\"\202\346\211\211\324\314:\203\313@\262:?\211\262\203\313A\262\202\262\211\205\320\314\266\203?\262\203\340#\202\346\311\"\262\202<\353\232\203\370\313\324\"\202<\211\354\267\2020\fA\211:\2030\211@A\211\204\313\n\"\266\202\202+\211	\313\313\332B
\"\"\266\203\266\202\202\314\355\232\203>\313\324\"\202\314\325!\262\203\224\211\n>?\262\203Y\"\202\314\211\211\324\314:\203v@\262:?\211\262\203vA\262\202]\211\205{\314\266\203?\262\203\213#\202\314\311\"\202\314\211\211\324\314:\203\261@\262:?\211\262\203\261A\262\202\230\211\205\266\314\266\203?\262\203\306#\202\314\311\"\262\202<A\211:\203\304	\211@A\211\211\324\211:\203	@\2629\203\365\324D\202\366B\262A\262\202\341\211\237\266\203\211\324\211\211\211:\203-	@\262\211A\262\242\262@\262\326!B\262A\262\202\n	\211\237\266\205\313\356\357\324\211\211\324\211:\203p	@\262\211A\262\242\262@\262:\203p	@\262DB\262A\262A\262\202<	\211\237\266\207\324\211\211\324\211:\203\257	@\262\211A\262\242\262@\262:\203\257	@\262DB\262A\262A\262\202|	\211\237\266\207\"BB\f\"\266\202\266\202\266\202\202`\n\355\232\203\322	\313\324\"\202`\n\325!\262\203(\n\211\n>?\262\203\355	\"\202`\n\211\211\324\314:\203\n\n@\262:?\211\262\203\n\nA\262\202\361	\211\205\n\314\266\203?\262\203\n#\202`\n\311\"\202`\n\211\211\324\314:\203E\n@\262:?\211\262\203E\nA\262\202,\n\211\205J\n\314\266\203?\262\203Z\n#\202`\n\311\"\262\202<A\211:\203\217\211@\211\204\203\nA\211\313\332B	\"\262\262\202\212\211:\203\353\n\211@AA\211\2119\203\232\n\211\202\234\n\211@\243@\326!\313\316\360\320	\f\203\265\n\361!\203\315\n\362\n\"B\313\356BB\")\202\336\n\313\363\f\356BB#\"\257\"\"\266\203\266\203\266\203\202\212\355\232\203\372\n\313\324\"\202\212\325!\262\203Q\211\n>?\262\203\"\202\212\211\324\314:\2032@\262:?\211\262\2032A\262\202\211\2057\314\266\203?\262\203H#\202\212\311\"\202\212\211\324\314:\203n@\262:?\211\262\203nA\262\202U\211\205s\314\266\203?\262\203\204#\202\212\311\"\262\202+\f\355\232\203\235\313\324\"\202+\f\325!\262\203\363\211\n>?\262\203\270\"\202+\f\211\211\324\314:\203\325@\262:?\211\262\203\325A\262\202\274\211\205\332\314\266\203?\262\203\352#\202+\f\311\"\202+\f\211\211\324\314:\203\f@\262:?\211\262\203\fA\262\202\367\211\205\f\314\266\203?\262\203%\f#\202+\f\311\"\262\202<\355\232\203=\f\313\324\"\202<\211\364\267\202\252A\211:\203|\f\211@A\211\204]\f\313	\"\262\202w\f\211\313\316\365\320\321	\313\336\fB\"FE\"\"\266\202\266\202\202\n
\325!\262\203\322\f\211\n>?\262\203\227\f\"\202\n
\211\211\324\314:\203\264\f@\262:?\211\262\203\264\fA\262\202\233\f\211\205\271\f\314\266\203?\262\203\311\f#\202\n
\311\"\202\n
\211\211\324\314:\203\357\f@\262:?\211\262\203\357\fA\262\202\326\f\211\205\364\f\314\266\203?\262\203
#\202\n
\311\"\262\202<A\211:\203U
\211@A\211\204)
\313	\"\262\202P
\211\313\326\366!\316\367\320	\313\332\fB\316\370\320	\f\257\"\"\257\"\262\"\266\202\266\202\202\343
\325!\262\203\253
\211\n>?\262\203p
\"\202\343
\211\211\324\314:\203\215
@\262:?\211\262\203\215
A\262\202t
\211\205\222
\314\266\203?\262\203\242
#\202\343
\311\"\202\343
\211\211\324\314:\203\310
@\262:?\211\262\203\310
A\262\202\257
\211\205\315
\314\266\203?\262\203\335
#\202\343
\311\"\262\202<A\211:\2038\211@A\211
\204\377
\371\372\373!!\316\374\332\357\320EC\"B\"@\324@\316\375\332\205\376DBB\")@\377!B\313\"*\266\202\266\202\266\202\202\306\325!\262\203\216\211\n>?\262\203S\"\202\306\211\211\324\314:\203p@\262:?\211\262\203pA\262\202W\211\205u\314\266\203?\262\203\205#\202\306\311\"\202\306\211\211\324\314:\203\253@\262:?\211\262\203\253A\262\202\222\211\205\260\314\266\203?\262\203\300#\202\306\311\"\262\202<A\211:\203\211@A\211\371\372\201C!!\313\"\332\320\321	\313\332\nB\"FED@EABABBB\266\203\266\202\266\202\202\235\325!\262\203e\211\n>?\262\203*\"\202\235\211\211\324\314:\203G@\262:?\211\262\203GA\262\202.\211\205L\314\266\203?\262\203\\#\202\235\311\"\202\235\211\211\324\314:\203\202@\262:?\211\262\203\202A\262\202i\211\205\207\314\266\203?\262\203\227#\202\235\311\"\262\202<A\211:\203_\211@A\211\204\310\316\201D\320	\201ED
\257\"\262\202Z\325!\262\203 \211\n>?\262\203\343\"\202Z\211\324\314:\203@\262:?\211\262\203A\262\202\347\211\205\314\266\203?\262\203#\202Z\311\"\202Z\211\324\314:\203=@\262:?\211\262\203=A\262\202$\211\205B\314\266\203?\262\203T#\202Z\311\"\266\202\202\355\325!\262\203\265\211\n>?\262\203z\"\202\355\211\211\324\314:\203\227@\262:?\211\262\203\227A\262\202~\211\205\234\314\266\203?\262\203\254#\202\355\311\"\202\355\211\211\324\314:\203\322@\262:?\211\262\203\322A\262\202\271\211\205\327\314\266\203?\262\203\347#\202\355\311\"\262\202<A\211:\203\257\211@A\211\204\316\201F\320	\201GD
\257\"\262\202\252\325!\262\203p\211\n>?\262\2033\"\202\252\211\324\314:\203P@\262:?\211\262\203PA\262\2027\211\205U\314\266\203?\262\203g#\202\252\311\"\202\252\211\324\314:\203\215@\262:?\211\262\203\215A\262\202t\211\205\222\314\266\203?\262\203\244#\202\252\311\"\266\202\202=\325!\262\203\211\n>?\262\203\312\"\202=\211\211\324\314:\203\347@\262:?\211\262\203\347A\262\202\316\211\205\354\314\266\203?\262\203\374#\202=\311\"\202=\211\211\324\314:\203\"@\262:?\211\262\203\"A\262\202	\211\205'\314\266\203?\262\2037#\202=\311\"\262\202<A\211:\203\211@A\211\204\200\313\316\201H\332\320@\203m\316\201I\320E\"\202oE\201J\201K	EE\"\"\262\202\325!\262\203\330\211\n>?\262\203\233\"\202\211\324\314:\203\270@\262:?\211\262\203\270A\262\202\237\211\205\275\314\266\203?\262\203\317#\202\311\"\202\211\324\314:\203\365@\262:?\211\262\203\365A\262\202\334\211\205\372\314\266\203?\262\203\f#\202\311\"\266\202\202\245\325!\262\203m\211\n>?\262\2032\"\202\245\211\211\324\314:\203O@\262:?\211\262\203OA\262\2026\211\205T\314\266\203?\262\203d#\202\245\311\"\202\245\211\211\324\314:\203\212@\262:?\211\262\203\212A\262\202q\211\205\217\314\266\203?\262\203\237#\202\245\311\"\262\202<A\325!\262\203\211\n>?\262\203\307\"\202:\211\211\324\314:\203\344@\262:?\211\262\203\344A\262\202\313\211\205\351\314\266\203?\262\203\371#\202:\311\"\202:\211\211\324\314:\203@\262:?\211\262\203A\262\202\211\205$\314\266\203?\262\2034#\202:\311\"\262\262\202d\334\232\204Y\350\232\204Y\353\232\204Y\355\232\203`\313\324\"\202d\311\"\207" [cps--state-symbol cps--value-symbol cps-standard-special-forms cps--dynamic-wrappers lexical-binding cps--cleanup-table-symbol #[514 "\300\301\"\207" [error "special form %S incorrect or not supported"] 5 "\n\n(fn FORM NAME)"] #[771 "\300\211:\203%@\262:\204\202\301\302\303!!B\262A\262\202\211\237\266\203\304\305\300\300\211:\203Z@\262:\203Z@\262=\204ODB\262A\262A\262\2020\211\237\266\205BE\"\207" [nil gensym format "cps-argument-" cps--transform-1 let*] 13 "\n\n(fn NEXT-STATE ARGUMENTS FUNCTION)"] cps--atomic-p cps--make-atomic-state (and) cps--transform-1 t #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (and 41 catch 283)) cps--add-state "and" setf if and #s(hash-table size 4 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#1=(cond) 104 #2=(inline) 112 #3=(progn) 120 #4=(or) 128)) nil cps--special-form-p cps--add-binding "catch-tag" "cps-update-tag" cps--make-catch-wrapper progn #s(hash-table size 4 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#1# 344 #2# 352 #3# 360 #4# 368)) #1# #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (cond 542 condition-case 970 if 1374)) or cond #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#2# 620 #3# 628 #4# 636)) #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#2# 799 #3# 807 #4# 815)) cps--make-condition-wrapper #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#2# 1022 #3# 1030 #4# 1038)) #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#2# 1203 #3# 1211 #4# 1219)) "if" #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#2# 1437 #3# 1445 #4# 1453)) #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#2# 1618 #3# 1626 #4# 1634)) #2# inline #s(hash-table size 2 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#3# 1864 #4# 1872)) #3# #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (progn 2046 let 2257 let* 2661)) #4# let* append "let*" special-variable-p cps--make-dynamic-binding-wrapper cps--replace-variable-references #s(hash-table size 7 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (or 3139 prog1 3343 unwind-protect 3560 while 3787 quote 4002 function 4338 cps-internal-yield 4674)) "or" "prog1-temp" "prog1" "prog1inner" gensym format "cps-cleanup-table-" "unwind" "cleanup" funcall cps--make-unwind-wrapper cps--cleanup-function cps--states cps--bindings "cps-state-while-" "quote" quote "function" function "iter-yield" "after-yield" throw 'cps--yield] 31 (#$ . 4808)])
#@31 

(fn TAG-BINDING NEXT-STATE)
(defalias 'cps--make-catch-wrapper #[514 "\300\301\302\303\304\"\305\"\306\307%\207" [make-byte-code 257 "\303\304\305!!\306C\307\310\300\307\311\312BBEE\313\311\n\301EEEE\207" vconcat vector [cps--state-symbol gensym format "cps-normal-exit-from-catch-" let prog1 catch setf (t) unless] 12 "\n\n(fn FORM)"] 9 (#$ . 19432)])
#@32 

(fn VAR NEXT-STATE HANDLERS)
(defalias 'cps--make-condition-wrapper #[771 "\300\301!\302\303\304!!\305\211\211:\2038@\262\211A\262\242\262\306\307	\310B#\n\"BB\262A\262\202\f\211\237\266\204\311\312\313\314\315#\316\"\317\320%\207" [cps--add-binding "condition-case-error" gensym format "cps-lexical-error-" nil cps--transform-1 cps--replace-variable-references progn make-byte-code 257 "\304\301\302\305\211\211:\203-@\262\211A\262\242\262\306\300\301\257DB\262A\262\202\211\237\266\204BBB\207" vconcat vector [cps--state-symbol condition-case nil setf] 14 "\n\n(fn FORM)"] 16 (#$ . 19803)])
#@162 Replace all non-shadowed references to VAR with NEW-VAR in FORM.
This routine does not modify FORM.  Instead, it returns a
modified copy.

(fn VAR NEW-VAR FORM)
(defalias 'cps--replace-variable-references #[771 "\301\302DCE\"\207" [macroexpand-all-environment macroexpand-all cl-symbol-macrolet] 7 (#$ . 20450)])
#@21 

(fn UNWIND-FORMS)
(defalias 'cps--make-unwind-wrapper #[257 "\204\301\300!\210\302\303\304\305\306!\307\"\310\311%\207" [lexical-binding cl--assertion-failed make-byte-code 257 "\301\302\303!!\304C\305\306\307\310BBE\311\300BBEE\207" vconcat vector [gensym format "cps-normal-exit-from-unwind-" let unwind-protect prog1 setf (t) unless] 10 "\n\n(fn FORM)"] 7 (#$ . 20773)])
(define-error 'iter-end-of-sequence "Iteration terminated" 'iter-end-of-sequence)
#@23 

(fn TERMINAL-STATE)
(defalias 'cps--make-close-iterator-form #[257 "\203\303\304\305\306	EDDC\307	\n\310BBBB\311BBB\207\307	\n\312BBBB\207" [cps--cleanup-table-symbol cps--state-symbol cps--value-symbol let cleanup cdr assq setf (nil) ((when cleanup (funcall cleanup))) (nil)] 8 (#$ . 21246)])
#@13 

(fn BODY)
(defalias 'cps-generate-evaluator #[257 "\306\211\306\307\310\311!!\307\310\312!!\306\313\314\315\316E\"\317\320\321\322BB3\"\"
\2054
\2054\307\310\323!!\324\325\fD
\205?
C\205EC	\237$\325\237\306\211\211\211\211:\203\230@\262\211A\262\242\262\211A\262\242\262@\262\326\327\306EEB\262\203\221
\204\205\330\305!\210\331\332E
EB\262A\262\202P\211\237\266\206\326\fE\324\333\327\334\335\325\205\271\336\326
\337BBD\340
DD\341\342!D\343\326\344BB\324\345\346\347\350\351\352\353\354\fDEE\355BB\356\357\342!EEEE\360BB\"BEDC\205\355\361\362BBBD\".BB\207" [cps--states cps--bindings cps--cleanup-function cps--value-symbol cps--state-symbol cps--cleanup-table-symbol nil gensym format "cps-current-value-" "cps-current-state-" cps--add-state "terminal" signal 'iter-end-of-sequence cps--transform-1 macroexpand-all cl-macrolet ((iter-yield (value) `(cps-internal-yield ,value))) "cps-iterator-finalizer-" let append setf lambda cl--assertion-failed push cons iterator (op value) cond (eq op :stash-finalizer) (value) (eq op :get-finalizer) (eq op :close) cps--make-close-iterator-form (eq op :next) (value) ((yielded nil)) unwind-protect prog1 catch 'cps--yield while t funcall ((setf yielded t)) unless yielded ((t (error "unknown iterator operation %S" op))) (funcall iterator :stash-finalizer (make-finalizer (lambda nil (iter-close iterator)))) (iterator) macroexpand-all-environment] 30 (#$ . 21554)])
#@221 When used inside a generator, yield control to caller.
The caller of `iter-next' receives VALUE, and the next call to
`iter-next' resumes execution with the form immediately following this
`iter-yield' call.

(fn VALUE)
(defalias 'iter-yield #[257 "\300\301!\207" [error "`iter-yield' used outside a generator"] 3 (#$ . 23035)])
#@329 When used inside a generator function, delegate to a sub-iterator.
The values that the sub-iterator yields are passed directly to
the caller, and values supplied to `iter-next' are sent to the
sub-iterator.  `iter-yield-from' evaluates to the value that the
sub-iterator function returns via `iter-end-of-sequence'.

(fn VALUE)
(defalias 'iter-yield-from '(macro . #[257 "\300\301\302!!\300\301\303!!\304DC\305\306\304\307\310\311\312\313\314\315
\316BBDEEE\317\320	DDF\321DEE\207" [gensym format "yield-from-result" "yield-from-value" let unwind-protect condition-case ((vs nil)) while t setf vs iter-yield iter-next (vs) iter-end-of-sequence cdr iter-close] 18 (#$ . 23371)]))
#@248 Creates a generator NAME.
When called as a function, NAME returns an iterator value that
encapsulates the state of a computation that produces a sequence
of values.  Callers can retrieve each value using `iter-next'.

(fn NAME ARGLIST &rest BODY)
(defalias 'iter-defun '(macro . #[642 "\204\301\300!\210\302!\211@A\303\304\305!C\"BBB\207" [lexical-binding cl--assertion-failed macroexp-parse-body defun append cps-generate-evaluator] 13 (#$ . 24063)]))
(byte-code "\300\301\302\303#\304\301\305\306#\210\300\301\307\310#\300\207" [function-put iter-defun lisp-indent-function defun put edebug-form-spec (&define name lambda-list lambda-doc def-body) doc-string-elt 3] 5)
#@113 Return a lambda generator.
`iter-lambda' is to `iter-defun' as `lambda' is to `defun'.

(fn ARGLIST &rest BODY)
(defalias 'iter-lambda '(macro . #[385 "\204\301\300!\210\302\303!E\207" [lexical-binding cl--assertion-failed lambda cps-generate-evaluator] 6 (#$ . 24753)]))
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put iter-lambda lisp-indent-function defun put edebug-form-spec (&define lambda-list lambda-doc def-body)] 5)
#@41 Return a new iterator.

(fn &rest BODY)
(defalias 'iter-make '(macro . #[128 "\300!\207" [cps-generate-evaluator] 3 (#$ . 25208)]))
(put 'iter-make 'edebug-form-spec t)
#@59 Trivial iterator that always signals the end of sequence.
(defconst iter-empty #[514 "\300\301\302\"\207" [signal iter-end-of-sequence nil] 5 "\n\n(fn OP VAL)"] (#$ . 25384))
#@261 Extract a value from an iterator.
YIELD-RESULT becomes the return value of `iter-yield' in the
context of the generator.

This routine raises the `iter-end-of-sequence' condition if the
iterator cannot supply more values.

(fn ITERATOR &optional YIELD-RESULT)
(defalias 'iter-next #[513 "\300\"\207" [:next] 5 (#$ . 25566)])
#@120 Terminate an iterator early.
Run any unwind-protect handlers in scope at the point ITERATOR
is blocked.

(fn ITERATOR)
(defalias 'iter-close #[257 "\211\300\301\"\207" [:close nil] 4 (#$ . 25900)])
#@183 Loop over values from an iterator.
Evaluate BODY with VAR bound to each value from ITERATOR.
Return the value with which ITERATOR finished iteration.

(fn (VAR ITERATOR) &rest BODY)
(defalias 'iter-do '(macro . #[128 "\211\203
\211A\262\242\202\300\301\302GD\"\211G\303U\203$\211A\262\242\202+\300\301\302GD\"@\304\305\306!!\304\305\307!!\304\305\310!!\304\305\311!!\312\313B	DF\314\315D\316\317\f\320\nDE\321\317	\322
DE\317
\323BBEF\324	BBFF\266\204\207" [signal wrong-number-of-arguments iter-do 2 gensym format "iter-do-iterator-done" "iter-do-condition" "iter-do-iterator" "iter-do-result" let (nil) while not condition-case setf iter-next iter-end-of-sequence cdr (t) unless] 20 (#$ . 26105)]))
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put iter-do lisp-indent-function 1 put edebug-form-spec ((symbolp form) body)] 5)
#@17 

(fn CONSCELL)
(defalias 'cps--advance-for '(macro . #[257 "\300\301\302\303\304\305DDEE\306BBB\207" [condition-case nil progn setcar iter-next cdr ((iter-end-of-sequence nil))] 9 (#$ . 26988)]))
#@17 

(fn ITERATOR)
(defalias 'cps--initialize-for '(macro . #[257 "\300\301\302!!\303\304\305EDC\306DE\207" [gensym format "cps--loop-temp" let cons nil cps--advance-for] 7 (#$ . 27195)]))
#@40 Support `iter-by' in `loop'.

(fn VAR)
(defalias 'cps--handle-loop-for #[257 "\211A\242\301\302\303\304D\305BBBB\"\211\207" [cl--loop-args append for in cps--initialize-for (by 'cps--advance-for)] 8 (#$ . 27390)])
(byte-code "\300\301\302\303#\210\304\305\306\"\210\307\310!\207" [put iter-by cl-loop-for-handler cps--handle-loop-for eval-after-load elisp-mode #[0 "\300\301\302\"\207" [font-lock-add-keywords emacs-lisp-mode (("(\\(iter-defun\\)\\_>\\s *\\(\\(?:\\sw\\|\\s_\\)+\\)?" (1 font-lock-keyword-face nil t) (2 font-lock-function-name-face nil t)) ("(\\(iter-\\(?:next\\|lambda\\|yield\\|yield-from\\)\\)\\_>" (1 font-lock-keyword-face nil t)))] 3] provide generator] 4)

Zerion Mini Shell 1.0