X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Futils.scm;fp=src%2Futils.scm;h=f2b339aa18ebbbfe365490ec59037f12dd3bb697;hb=76eb79c269dde7cc5c0660803bdd37ae3fdd8cb0;hp=17d1bbfb5d35d098f05472533f4ac930aabb2782;hpb=5dd13d5513fd1cb315f9ce039d54efa451a3aa94;p=gacela.git diff --git a/src/utils.scm b/src/utils.scm index 17d1bbf..f2b339a 100644 --- a/src/utils.scm +++ b/src/utils.scm @@ -16,11 +16,12 @@ (define-module (gacela utils) - #:export (use-cache-with)) + #:use-module (ice-9 session) + #:export (use-cache-with + procedure-header)) ;;; Cache for procedures - (define (use-cache-with proc) (let ((cache (make-weak-value-hash-table))) (lambda (. param) @@ -31,3 +32,11 @@ (set! res (apply proc param)) (hash-set! cache key res) res)))))) + + +;;; Retrive header definition of a procedure + (define (procedure-header proc) + (let* ((args (procedure-arguments proc)) + (name (procedure-name proc)) + (required (cdar args))) + (cons name required)))