tcl: apply command — anonymous proc call reusing tcl-call-proc frame machinery
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 44s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 44s
This commit is contained in:
@@ -2903,6 +2903,28 @@
|
|||||||
(define tcl-cmd-tell (fn (interp args) (assoc interp :result "0")))
|
(define tcl-cmd-tell (fn (interp args) (assoc interp :result "0")))
|
||||||
|
|
||||||
(define tcl-cmd-flush (fn (interp args) (assoc interp :result "")))
|
(define tcl-cmd-flush (fn (interp args) (assoc interp :result "")))
|
||||||
|
(define
|
||||||
|
tcl-cmd-apply
|
||||||
|
(fn
|
||||||
|
(interp args)
|
||||||
|
(if
|
||||||
|
(< (len args) 1)
|
||||||
|
(error "apply: wrong # args: should be "apply lambdaList ?arg ...?"")
|
||||||
|
(let
|
||||||
|
((func-list (tcl-list-split (first args)))
|
||||||
|
(call-args (rest args)))
|
||||||
|
(if
|
||||||
|
(< (len func-list) 2)
|
||||||
|
(error "apply: lambdaList must be a 2 or 3 element list")
|
||||||
|
(let
|
||||||
|
((param-spec (first func-list))
|
||||||
|
(body (nth func-list 1))
|
||||||
|
(ns (if (> (len func-list) 2) (nth func-list 2) nil)))
|
||||||
|
(let
|
||||||
|
((proc-def {:args param-spec :body body :ns ns}))
|
||||||
|
(tcl-call-proc interp "#apply" proc-def call-args))))))))
|
||||||
|
|
||||||
|
|
||||||
(define
|
(define
|
||||||
tcl-cmd-regexp
|
tcl-cmd-regexp
|
||||||
(fn
|
(fn
|
||||||
@@ -3172,4 +3194,4 @@
|
|||||||
((i (tcl-register i "flush" tcl-cmd-flush)))
|
((i (tcl-register i "flush" tcl-cmd-flush)))
|
||||||
(let ((i (tcl-register i "file" tcl-cmd-file)))
|
(let ((i (tcl-register i "file" tcl-cmd-file)))
|
||||||
(let ((i (tcl-register i "regexp" tcl-cmd-regexp)))
|
(let ((i (tcl-register i "regexp" tcl-cmd-regexp)))
|
||||||
(tcl-register i "regsub" tcl-cmd-regsub))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
|
(let ((i (tcl-register i "regsub" tcl-cmd-regsub))) (tcl-register i "apply" tcl-cmd-apply)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
|
||||||
|
|||||||
Reference in New Issue
Block a user