;ELC   
;;; Compiled
;;; in Emacs version 29.4
;;; with all optimizations.



(require 'cl-lib)#@48 Delay the evaluation of BODY.

(fn &rest BODY)
(defalias 'thunk-delay '(macro . #[128 "\204 \301\300!\210\302\303\304\305\306BBDD\307BB\207" [lexical-binding cl--assertion-failed let forced val lambda nil ((lambda (&optional check) (if check forced (unless forced (setf val (funcall val)) (setf forced t)) val)))] 7 (#$ . 101)]))
(put 'thunk-delay 'edebug-form-spec '(def-body))#@142 Force the evaluation of DELAYED.
The result is cached and will be returned on subsequent calls
with the same DELAYED argument.

(fn DELAYED)
(defalias 'thunk-force #[257 "\211 \207" [] 2 (#$ . 489)])#@61 Return non-nil if DELAYED has been evaluated.

(fn DELAYED)
(defalias 'thunk-evaluated-p #[257 "\211\300!\207" [t] 3 (#$ . 694)])#@384 Like `let' but create lazy bindings.

BINDINGS is a list of elements of the form (SYMBOL EXPRESSION).
Any binding EXPRESSION is not evaluated before the variable
SYMBOL is used for the first time when evaluating the BODY.

It is not allowed to set `thunk-let' or `thunk-let*' bound
variables.

Using `thunk-let' and `thunk-let*' requires `lexical-binding'.

(fn BINDINGS &rest BODY)
(defalias 'thunk-let '(macro . #[385 "\300\301\"\262\210\302\301\"\262\210\303\301\304\"\305\301\306\"BBE\207" [#[257 "\300:\203( \242\2119\203$ \243\211:\203  \211\243\211\204 \207!\207!\207!\207\211!\207" [#[257 "\300\301\302D\"\207" [signal error "Bad binding in thunk-let"] 5 "\n\n(fn BINDING)"]] 7 "\n\n(fn BINDING)"] mapcar #[257 "\211\242\243\211\242\243\300\301!\302P!E\207" [make-symbol symbol-name "-thunk"] 8 "\n\n(fn ARG0)"] let #[257 "\211\242\243\211\242\243\211\242\243\300\301DD\207" [nil thunk-delay] 11 "\n\n(fn ARG0)"] cl-symbol-macrolet #[257 "\211\242\243\211\242\243\211\242\243\300\301DD\207" [nil thunk-force] 11 "\n\n(fn ARG0)"]] 8 (#$ . 830)]))
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put thunk-let lisp-indent-function 1 put edebug-form-spec let] 5)#@385 Like `let*' but create lazy bindings.

BINDINGS is a list of elements of the form (SYMBOL EXPRESSION).
Any binding EXPRESSION is not evaluated before the variable
SYMBOL is used for the first time when evaluating the BODY.

It is not allowed to set `thunk-let' or `thunk-let*' bound
variables.

Using `thunk-let' and `thunk-let*' requires `lexical-binding'.

(fn BINDINGS &rest BODY)
(defalias 'thunk-let* '(macro . #[385 "\300\301\302!\303\304!$\207" [cl-reduce #[514 "\300CE\207" [thunk-let] 5 "\n\n(fn EXPR BINDING)"] reverse :initial-value macroexp-progn] 8 (#$ . 2058)]))
(byte-code "\300\301\302\303#\304\301\305\306#\210\307\310!\207" [function-put thunk-let* lisp-indent-function 1 put edebug-form-spec let provide thunk] 5)
