確認作業

使用例のナニを。(カンニングしつつ

LREF0_PUSH

gosh> (disasm (lambda (a b c d e f) (a f)))
main_code (name=#f, code=0x81f1ca0, size=4, const=0, stack=4):
args: #f
     0 LREF0-PUSH               ; f
     1 LREF(0,5)                ; a
     2 TAIL-CALL(1)             ; (a f)
     3 RET 
#<undef>
gosh> 

LREF1_PUSH

gosh> (disasm (lambda (a b c d e f) (a e)))
main_code (name=#f, code=0x81f1c70, size=4, const=0, stack=4):
args: #f
     0 LREF1-PUSH               ; e
     1 LREF(0,5)                ; a
     2 TAIL-CALL(1)             ; (a e)
     3 RET 
#<undef>
gosh> 

LREF2_PUSH

gosh> (disasm (lambda (a b c d e f) (a d)))
main_code (name=#f, code=0x81f1c40, size=4, const=0, stack=4):
args: #f
     0 LREF2-PUSH               ; d
     1 LREF(0,5)                ; a
     2 TAIL-CALL(1)             ; (a d)
     3 RET 
#<undef>
gosh> 

LREF3_PUSH

gosh> (disasm (lambda (a b c d e f) (a c)))
main_code (name=#f, code=0x81f1c10, size=4, const=0, stack=4):
args: #f
     0 LREF3-PUSH               ; c
     1 LREF(0,5)                ; a
     2 TAIL-CALL(1)             ; (a c)
     3 RET 
#<undef>
gosh> 

LREF4_PUSH

gosh> (disasm (lambda (a b c d e f) (a b)))
main_code (name=#f, code=0x81f1be0, size=4, const=0, stack=4):
args: #f
     0 LREF-PUSH(0,4)           ; b
     1 LREF(0,5)                ; a
     2 TAIL-CALL(1)             ; (a b)
     3 RET 
#<undef>
gosh> 

む。

LREF10_PUSH

gosh> (disasm (lambda (a b c d e) (lambda (x) (x e))))
main_code (name=#f, code=0x81f1ba0, size=3, const=1, stack=0):
args: #f
     0 CLOSURE #<lambda 0>      ; (lambda (x) (x e))
     2 RET 
internal_closure_0 (name=#f, code=0x81f1bb0, size=4, const=0 stack=4):
args: #f
     0 LREF10-PUSH              ; e
     1 LREF0                    ; x
     2 TAIL-CALL(1)             ; (x e)
     3 RET 
#<undef>
gosh> 

LREF11_PUSH

gosh> (disasm (lambda (a b c d e) (lambda (x) (x d))))
main_code (name=#f, code=0x81f1b40, size=3, const=1, stack=0):
args: #f
     0 CLOSURE #<lambda 0>      ; (lambda (x) (x d))
     2 RET 
internal_closure_0 (name=#f, code=0x81f1b50, size=4, const=0 stack=4):
args: #f
     0 LREF11-PUSH              ; d
     1 LREF0                    ; x
     2 TAIL-CALL(1)             ; (x d)
     3 RET 
#<undef>

LREF12_PUSH

gosh> (disasm (lambda (a b c d e) (lambda (x) (x c))))
main_code (name=#f, code=0x81f1ae0, size=3, const=1, stack=0):
args: #f
     0 CLOSURE #<lambda 0>      ; (lambda (x) (x c))
     2 RET 
internal_closure_0 (name=#f, code=0x81f1af0, size=4, const=0 stack=4):
args: #f
     0 LREF12-PUSH              ; c
     1 LREF0                    ; x
     2 TAIL-CALL(1)             ; (x c)
     3 RET 
#<undef>
gosh> 

LREF13_PUSH

gosh> (disasm (lambda (a b c d e) (lambda (x) (x b))))
main_code (name=#f, code=0x81f1a80, size=3, const=1, stack=0):
args: #f
     0 CLOSURE #<lambda 0>      ; (lambda (x) (x b))
     2 RET 
internal_closure_0 (name=#f, code=0x81f1a90, size=4, const=0 stack=4):
args: #f
     0 LREF-PUSH(1,3)           ; b
     1 LREF0                    ; x
     2 TAIL-CALL(1)             ; (x b)
     3 RET 
#<undef>
gosh> 

あら??

LREF14_PUSH

gosh> (disasm (lambda (a b c d e) (lambda (x) (x a))))
main_code (name=#f, code=0x81f1a20, size=3, const=1, stack=0):
args: #f
     0 CLOSURE #<lambda 0>      ; (lambda (x) (x a))
     2 RET 
internal_closure_0 (name=#f, code=0x81f1a30, size=4, const=0 stack=4):
args: #f
     0 LREF-PUSH(1,4)           ; a
     1 LREF0                    ; x
     2 TAIL-CALL(1)             ; (x a)
     3 RET 
#<undef>
gosh> 

あらら??

LREF20_PUSH

gosh> (disasm (lambda (a b) (lambda (x) (lambda (y) (y b)))))
main_code (name=#f, code=0x81f1930, size=3, const=1, stack=0):
args: #f
     0 CLOSURE #<lambda 0>      ; (lambda (x) (lambda (y) (y b)))
     2 RET 
internal_closure_0 (name=#f, code=0x81f1940, size=3, const=1 stack=0):
args: #f
     0 CLOSURE #<lambda 1>      ; (lambda (y) (y b))
     2 RET 
internal_closure_1 (name=#f, code=0x81f1950, size=4, const=0 stack=4):
args: #f
     0 LREF20-PUSH              ; b
     1 LREF0                    ; y
     2 TAIL-CALL(1)             ; (y b)
     3 RET 
#<undef>
gosh> 

LREF21_PUSH

gosh> (disasm (lambda (a b) (lambda (x) (lambda (y) (y a)))))
main_code (name=#f, code=0x81f18b0, size=3, const=1, stack=0):
args: #f
     0 CLOSURE #<lambda 0>      ; (lambda (x) (lambda (y) (y a)))
     2 RET 
internal_closure_0 (name=#f, code=0x81f18c0, size=3, const=1 stack=0):
args: #f
     0 CLOSURE #<lambda 1>      ; (lambda (y) (y a))
     2 RET 
internal_closure_1 (name=#f, code=0x81f18d0, size=4, const=0 stack=4):
args: #f
     0 LREF21-PUSH              ; a
     1 LREF0                    ; y
     2 TAIL-CALL(1)             ; (y a)
     3 RET 
#<undef>
gosh> 

LREF30_PUSH

gosh> (disasm (lambda (a) (lambda (b) (lambda (c) (lambda (d) (d a))))))
main_code (name=#f, code=0x81f1820, size=3, const=1, stack=0):
args: #f
     0 CLOSURE #<lambda 0>      ; (lambda (b) (lambda (c) (lambda (d) (d a ...
     2 RET 
internal_closure_0 (name=#f, code=0x81f1830, size=3, const=1 stack=0):
args: #f
     0 CLOSURE #<lambda 1>      ; (lambda (c) (lambda (d) (d a)))
     2 RET 
internal_closure_1 (name=#f, code=0x81f1840, size=3, const=1 stack=0):
args: #f
     0 CLOSURE #<lambda 2>      ; (lambda (d) (d a))
     2 RET 
internal_closure_2 (name=#f, code=0x81f1850, size=4, const=0 stack=4):
args: #f
     0 LREF30-PUSH              ; a
     1 LREF0                    ; d
     2 TAIL-CALL(1)             ; (d a)
     3 RET 
#<undef>
gosh> 

ええと

  • LREF4_PUSH
  • LREF13_PUSH
  • LREF14_PUSH

はどうなんでしょうか。
# って obsoleted なナニが見えるな。