Skip to content

Instantly share code, notes, and snippets.

@samth
Created March 29, 2019 15:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save samth/d90f9e608f4acc3deaa4578b21d2d5c7 to your computer and use it in GitHub Desktop.
Save samth/d90f9e608f4acc3deaa4578b21d2d5c7 to your computer and use it in GitHub Desktop.
(module a '#%kernel
(define-values
(struct:keyword-procedure
mkkwproc
keywordprocedure?
keyword-procedure-ref
keywordprocedureset)
(make-struct-type 'procedure #f 4 '0))
(define-values
(keyword-procedure-proc)
(make-struct-field-accessor keyword-procedure-ref 1))
0
0
(define-values
(structokp makeoptionalkeywordprocedure okp? okpref okpset)
(make-struct-type 'procedure struct:keyword-procedure 1 0))
(define-values
(procedure new-procedure? b)
(make-struct-type-property 'procedure #f () #t))
0
0
(define-values
(struct:keyword-procedure/arity-error makekp/ae kp/ae? kp/aeref kp/aeset)
(make-struct-type
'procedure
struct:keyword-procedure
0
0
#f
(list (cons prop:incomplete-arity #t))))
(define-values
(new:chaperone-procedure)
(let-values (((chaperone-procedure_0)
(lambda (proc_5 wrap-proc_0 . props_0)
(begin
(do-chaperone-procedure
#f
#f
procedure
'chaperoneprocedure
proc_5
wrap-proc_0
props_0)))))
chaperone-procedure_0))
(define-values
(do-chaperone-procedure)
(lambda (is-impersonator?_0
selfarg?_0
chaperoneprocedure_1
name_1
proc_7
wrapproc_2
props_2)
(begin
(let-values (((n-proc_0) (normalize-proc proc_7)))
(if (let-values (((or-part_9) (not 0)))
(if or-part_9
or-part_9
(let-values (((or-part_10) (not 0)))
(if or-part_10 or-part_10 (bad-props? props_2)))))
0
(begin
(let-values ()
(let-values (((new-proc_0 chap-accessor_0)
((letrec-values (((wrap_0)
(lambda (proc_8 n-proc_1)
(begin
(if (if 0
(new-procedure?
proc_8)
#f)
0
(if (okp? n-proc_1)
0
(let-values ()
(values
(if is-impersonator?_0
0
(chaperone-struct
n-proc_1
keyword-procedure-proc
(lambda (self_6
proc_12)
0)))
keyword-procedure-proc))))))))
wrap_0)
proc_7
n-proc_0)))
(if (null? props_2)
new-proc_0
(apply
chaperone-struct
new-proc_0
chap-accessor_0
#f
props_2))))))))))
(define-values
(bad-props?)
(lambda props_3
(begin
((letrec-values (((loop_8)
(lambda props_4 (begin (if 0 (let-values () #f) 0)))))
loop_8)
props_3))))
0
(define-values
(normalize-proc)
(lambda (proc_14) (begin (if 0 (let-values () proc_14) 0))))
(define-values
(lifted/1.1 lifted/2.1 lifted/3.1 lifted/4.1 lifted/5.1)
(make-struct-type
'c
struct:keyword-procedure/arity-error
0
0
#f
()
(current-inspector)
(case-lambda)))
(define-values (d-e.1) (lifted/2.1 0 0 '0 '0))
(define-values
(impersonator-prop:contracted ? -)
(make-impersonator-property 'contracted))
(print
(procedure?
(new:chaperone-procedure d-e.1 0 impersonator-prop:contracted 2))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment