Function: majutsu-template--lambda-from-form
majutsu-template--lambda-from-form is a natively compiled function
defined in majutsu-template.el.
Signature
(majutsu-template--lambda-from-form PARAMS BODY &optional PARAM-TYPE)
Documentation
Return lambda node from PARAMS and BODY forms.
When PARAM-TYPE is non-nil, bind the single lambda parameter to that type.
Source Code
;; Defined in /nix/store/jagqw3nms546pad0gxi5f3wsckk6pji7-emacs-packages-deps/share/emacs/site-lisp/majutsu-template.el
(defun majutsu-template--lambda-from-form (params body &optional param-type)
"Return lambda node from PARAMS and BODY forms.
When PARAM-TYPE is non-nil, bind the single lambda parameter to that type."
(let* ((parsed-params (majutsu-template--parse-lambda-params params))
(self-param (car parsed-params))
(param-type (majutsu-template--type-ref-normalize param-type))
(bound-type (unless (memq (majutsu-template--type-ref-base-type param-type)
'(Unknown Template))
param-type))
(self-node (and self-param
(majutsu-template--var-node
self-param bound-type
(unless bound-type '(:deferred-type t)))))
(bindings (mapcar (lambda (param)
(majutsu-template--make-binding
:name param
:type (and (eq param self-param) bound-type)
:node (when (eq param self-param) self-node)))
parsed-params))
(props (majutsu-template--lambda-props body))
(body-node (majutsu-template--call-with-bindings
bindings
(lambda ()
(majutsu-template--call-with-self-binding
self-node bound-type
(lambda ()
(majutsu-template--sugar-transform body))))))
(lambda-type (list :lambda
(list (or bound-type 'Unknown))
(or (majutsu-template-node-type body-node) 'Unknown))))
(majutsu-template--lambda-node parsed-params body-node props lambda-type)))