SA
если что то поменяется на нижнем уровне высокоуровневые штуки можно будет переписать внутри оставив внешную часть
Size: a a a
SA
SA
SA
consp
очевидно не должен быть в стандартеSA
typep
а твой консп этоSA
(typep x 'cons)
SA
SA
SA
(and (typep x 'cons) x)
SA
SA
SA
SA
CL-USER> (disassemble (lambda (x) (declare (optimize speed)) (typep x 'list)))
; disassembly for (LAMBDA (X))
; Size: 27 bytes. Origin: #x52C1338C ; (LAMBDA (X))
; 8C: 8D42F9 LEA EAX, [RDX-7]
; 8F: A80F TEST AL, 15
; 91: 750B JNE L1
; 93: BA4F011050 MOV EDX, #x5010014F ; T
; 98: L0: 488BE5 MOV RSP, RBP
; 9B: F8 CLC
; 9C: 5D POP RBP
; 9D: C3 RET
; 9E: L1: BA17011050 MOV EDX, #x50100117 ; NIL
; A3: EBF3 JMP L0
; A5: CC10 INT3 16 ; Invalid argument count trap
NIL
CL-USER> (disassemble 'listp)
; disassembly for LISTP
; Size: 27 bytes. Origin: #x521CE6BF ; LISTP
; BF: 8D43F9 LEA EAX, [RBX-7]
; C2: A80F TEST AL, 15
; C4: 740B JEQ L1
; C6: BA17011050 MOV EDX, #x50100117 ; NIL
; CB: L0: 488BE5 MOV RSP, RBP
; CE: F8 CLC
; CF: 5D POP RBP
; D0: C3 RET
; D1: L1: BA4F011050 MOV EDX, #x5010014F ; T
; D6: EBF3 JMP L0
; D8: CC10 INT3 16 ; Invalid argument count trap
NIL
SA
SA
SA
SA
a
consp
очевидно не должен быть в стандартеSA
SA
SA