Skip to content

Instantly share code, notes, and snippets.

@plaster
Last active December 17, 2015 23:29
Show Gist options
  • Save plaster/5689919 to your computer and use it in GitHub Desktop.
Save plaster/5689919 to your computer and use it in GitHub Desktop.
precompでparentの入るinternal defineの例
% gosh -V
Gauche scheme shell, version 0.9.3 [utf-8,pthreads], x86_64-unknown-linux-gnu
% gosh precomp -e -P -o even--odd even-odd.scm
/* Generated automatically from even-odd.scm. DO NOT EDIT */
#include <gauche.h>
#include <gauche/code.h>
#include <gauche/macro.h>
#include <gauche/extend.h>
#if defined(__CYGWIN__) || defined(GAUCHE_WINDOWS)
#define SCM_CGEN_CONST /*empty*/
#else
#define SCM_CGEN_CONST const
#endif
static SCM_CGEN_CONST struct scm__scRec {
ScmString d1129[16];
} scm__sc = {
{ /* ScmString d1129 */
SCM_STRING_CONST_INITIALIZER("even-odd", 8, 8),
SCM_STRING_CONST_INITIALIZER("%even?", 6, 6),
SCM_STRING_CONST_INITIALIZER("%odd?", 5, 5),
SCM_STRING_CONST_INITIALIZER("even?&odd?$", 11, 11),
SCM_STRING_CONST_INITIALIZER("%toplevel", 9, 9),
SCM_STRING_CONST_INITIALIZER("+", 1, 1),
SCM_STRING_CONST_INITIALIZER("pa$", 3, 3),
SCM_STRING_CONST_INITIALIZER("zero?", 5, 5),
SCM_STRING_CONST_INITIALIZER("map", 3, 3),
SCM_STRING_CONST_INITIALIZER("iota", 4, 4),
SCM_STRING_CONST_INITIALIZER("debug-print-pre", 15, 15),
SCM_STRING_CONST_INITIALIZER("gauche.vm.debugger", 18, 18),
SCM_STRING_CONST_INITIALIZER("debug-print-post", 16, 16),
SCM_STRING_CONST_INITIALIZER("cdr", 3, 3),
SCM_STRING_CONST_INITIALIZER("null?", 5, 5),
SCM_STRING_CONST_INITIALIZER("%test", 5, 5),
},
};
static struct scm__rcRec {
ScmCompiledCode d1131[6];
ScmWord d1130[172];
ScmObj d1128[60];
} scm__rc = {
{ /* ScmCompiledCode d1131 */
SCM_COMPILED_CODE_CONST_INITIALIZER( /* %even? */
(ScmWord*)(SCM_OBJ(&scm__rc.d1130[0])), 15,
9, 1, 0, SCM_FALSE, SCM_NIL, SCM_FALSE,
SCM_OBJ(&scm__rc.d1131[2]), SCM_FALSE),
SCM_COMPILED_CODE_CONST_INITIALIZER( /* %odd? */
(ScmWord*)(SCM_OBJ(&scm__rc.d1130[15])), 16,
9, 1, 0, SCM_FALSE, SCM_NIL, SCM_FALSE,
SCM_OBJ(&scm__rc.d1131[2]), SCM_FALSE),
SCM_COMPILED_CODE_CONST_INITIALIZER( /* even?&odd?$ */
(ScmWord*)(SCM_OBJ(&scm__rc.d1130[31])), 5,
6, 2, 0, SCM_FALSE, SCM_NIL, SCM_FALSE,
SCM_OBJ(&scm__rc.d1131[3]), SCM_FALSE),
SCM_COMPILED_CODE_CONST_INITIALIZER( /* %toplevel */
(ScmWord*)(SCM_OBJ(&scm__rc.d1130[36])), 5,
0, 0, 0, SCM_FALSE, SCM_NIL, SCM_FALSE,
SCM_FALSE, SCM_FALSE),
SCM_COMPILED_CODE_CONST_INITIALIZER( /* %test */
(ScmWord*)(SCM_OBJ(&scm__rc.d1130[41])), 126,
24, 0, 0, SCM_FALSE, SCM_NIL, SCM_FALSE,
SCM_OBJ(&scm__rc.d1131[5]), SCM_FALSE),
SCM_COMPILED_CODE_CONST_INITIALIZER( /* %toplevel */
(ScmWord*)(SCM_OBJ(&scm__rc.d1130[167])), 5,
0, 0, 0, SCM_FALSE, SCM_NIL, SCM_FALSE,
SCM_FALSE, SCM_FALSE),
},
{ /* ScmWord d1130 */
/* (even?&odd?$ %even?) */
0x0000100e /* 0 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[0]) + 5),
0x00000048 /* 2 (LREF0-PUSH) */,
0x00000044 /* 3 (LREF20) */,
0x00001011 /* 4 (CALL 1) */,
0x00000031 /* 5 (RT) */,
0x0000100e /* 6 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[0]) + 11),
0x00000048 /* 8 (LREF0-PUSH) */,
0x00000045 /* 9 (LREF21) */,
0x00001011 /* 10 (CALL 1) */,
0x0000000d /* 11 (PUSH) */,
0x00000041 /* 12 (LREF10) */,
0x0000101d /* 13 (LOCAL-ENV-TAIL-CALL 1) */,
0x00000014 /* 14 (RET) */,
/* (even?&odd?$ %odd?) */
0x0000100e /* 0 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[15]) + 5),
0x00000048 /* 2 (LREF0-PUSH) */,
0x00000044 /* 3 (LREF20) */,
0x00001011 /* 4 (CALL 1) */,
0x0000008a /* 5 (NOT) */,
0x00000030 /* 6 (RF) */,
0x0000100e /* 7 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[15]) + 12),
0x00000048 /* 9 (LREF0-PUSH) */,
0x00000045 /* 10 (LREF21) */,
0x00001011 /* 11 (CALL 1) */,
0x0000000d /* 12 (PUSH) */,
0x00000042 /* 13 (LREF11) */,
0x0000101d /* 14 (LOCAL-ENV-TAIL-CALL 1) */,
0x00000014 /* 15 (RET) */,
/* even?&odd?$ */
0x00002019 /* 0 (LOCAL-ENV-CLOSURES 2) */,
SCM_WORD(SCM_OBJ(&scm__rc.d1128[6])) /* (#<compiled-code (even?&odd?$ %even?)@0xe86a20> #<compiled-code (even?&odd?$ %odd?)@0xe869c0>) */,
0x00000049 /* 2 (LREF1-PUSH) */,
0x0000003d /* 3 (LREF0) */,
0x0000209b /* 4 (VALUES-RET 2) */,
/* %toplevel */
0x00000016 /* 0 (CLOSURE) */,
SCM_WORD(SCM_OBJ(&scm__rc.d1131[2])) /* #<compiled-code even?&odd?$@0xe86a80> */,
0x00000015 /* 2 (DEFINE 0) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#even?&odd?$> */,
0x00000014 /* 4 (RET) */,
/* %test */
0x0000200e /* 0 (PRE-CALL 2) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 13),
0x0000200e /* 2 (PRE-CALL 2) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 9),
0x00000053 /* 4 (GREF-PUSH) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#+> */,
-0x00000ff9 /* 6 (CONSTI-PUSH -1) */,
0x00002054 /* 7 (GREF-CALL 2) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#pa$> */,
0x00000056 /* 9 (PUSH-GREF) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#zero?> */,
0x00002057 /* 11 (PUSH-GREF-CALL 2) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#even?&odd?$> */,
0x00002036 /* 13 (TAIL-RECEIVE 2 0) */,
0x0000100e /* 14 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 20),
0x00000006 /* 16 (CONST-PUSH) */,
SCM_WORD(SCM_OBJ(&scm__rc.d1128[27])) /* (map %odd? (iota 10)) */,
0x00001054 /* 18 (GREF-CALL 1) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier gauche.vm.debugger#debug-print-pre> */,
0x0000200e /* 20 (PRE-CALL 2) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 30),
0x00000048 /* 22 (LREF0-PUSH) */,
0x0000100e /* 23 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 28),
0x0000a007 /* 25 (CONSTI-PUSH 10) */,
0x00001054 /* 26 (GREF-CALL 1) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#iota> */,
0x00002057 /* 28 (PUSH-GREF-CALL 2) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#map> */,
0x00400036 /* 30 (TAIL-RECEIVE 0 1) */,
0x0000100e /* 31 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 36),
0x00000048 /* 33 (LREF0-PUSH) */,
0x00001054 /* 34 (GREF-CALL 1) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier gauche.vm.debugger#debug-print-post> */,
0x0000001a /* 36 (POP-LOCAL-ENV) */,
0x0000100e /* 37 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 43),
0x00000006 /* 39 (CONST-PUSH) */,
SCM_WORD(SCM_OBJ(&scm__rc.d1128[38])) /* (map %even? (iota 10)) */,
0x00001054 /* 41 (GREF-CALL 1) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier gauche.vm.debugger#debug-print-pre> */,
0x0000200e /* 43 (PRE-CALL 2) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 53),
0x00000049 /* 45 (LREF1-PUSH) */,
0x0000100e /* 46 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 51),
0x0000a007 /* 48 (CONSTI-PUSH 10) */,
0x00001054 /* 49 (GREF-CALL 1) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#iota> */,
0x00002057 /* 51 (PUSH-GREF-CALL 2) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#map> */,
0x00400036 /* 53 (TAIL-RECEIVE 0 1) */,
0x0000100e /* 54 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 59),
0x00000048 /* 56 (LREF0-PUSH) */,
0x00001054 /* 57 (GREF-CALL 1) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier gauche.vm.debugger#debug-print-post> */,
0x0000001a /* 59 (POP-LOCAL-ENV) */,
0x0000001a /* 60 (POP-LOCAL-ENV) */,
0x0000200e /* 61 (PRE-CALL 2) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 69),
0x00000053 /* 63 (GREF-PUSH) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#cdr> */,
0x00000053 /* 65 (GREF-PUSH) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#null?> */,
0x00002054 /* 67 (GREF-CALL 2) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#even?&odd?$> */,
0x00002036 /* 69 (TAIL-RECEIVE 2 0) */,
0x0000100e /* 70 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 76),
0x00000006 /* 72 (CONST-PUSH) */,
SCM_WORD(SCM_OBJ(&scm__rc.d1128[52])) /* (map %odd? (map iota (iota 10))) */,
0x00001054 /* 74 (GREF-CALL 1) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier gauche.vm.debugger#debug-print-pre> */,
0x0000200e /* 76 (PRE-CALL 2) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 92),
0x00000048 /* 78 (LREF0-PUSH) */,
0x0000200e /* 79 (PRE-CALL 2) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 90),
0x00000053 /* 81 (GREF-PUSH) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#iota> */,
0x0000100e /* 83 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 88),
0x0000a007 /* 85 (CONSTI-PUSH 10) */,
0x00001054 /* 86 (GREF-CALL 1) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#iota> */,
0x00002057 /* 88 (PUSH-GREF-CALL 2) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#map> */,
0x00002057 /* 90 (PUSH-GREF-CALL 2) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#map> */,
0x00400036 /* 92 (TAIL-RECEIVE 0 1) */,
0x0000100e /* 93 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 98),
0x00000048 /* 95 (LREF0-PUSH) */,
0x00001054 /* 96 (GREF-CALL 1) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier gauche.vm.debugger#debug-print-post> */,
0x0000001a /* 98 (POP-LOCAL-ENV) */,
0x0000100e /* 99 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 105),
0x00000006 /* 101 (CONST-PUSH) */,
SCM_WORD(SCM_OBJ(&scm__rc.d1128[56])) /* (map %even? (map iota (iota 10))) */,
0x00001054 /* 103 (GREF-CALL 1) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier gauche.vm.debugger#debug-print-pre> */,
0x0000200e /* 105 (PRE-CALL 2) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 121),
0x00000049 /* 107 (LREF1-PUSH) */,
0x0000200e /* 108 (PRE-CALL 2) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 119),
0x00000053 /* 110 (GREF-PUSH) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#iota> */,
0x0000100e /* 112 (PRE-CALL 1) */,
SCM_WORD((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]) + 117),
0x0000a007 /* 114 (CONSTI-PUSH 10) */,
0x00001054 /* 115 (GREF-CALL 1) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#iota> */,
0x00002057 /* 117 (PUSH-GREF-CALL 2) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#map> */,
0x00002057 /* 119 (PUSH-GREF-CALL 2) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#map> */,
0x00400036 /* 121 (TAIL-RECEIVE 0 1) */,
0x00000048 /* 122 (LREF0-PUSH) */,
0x00001055 /* 123 (GREF-TAIL-CALL 1) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier gauche.vm.debugger#debug-print-post> */,
0x00000014 /* 125 (RET) */,
/* %toplevel */
0x00000016 /* 0 (CLOSURE) */,
SCM_WORD(SCM_OBJ(&scm__rc.d1131[4])) /* #<compiled-code %test@0xe86300> */,
0x00000015 /* 2 (DEFINE 0) */,
SCM_WORD(SCM_UNDEFINED) /* #<identifier #f#%test> */,
0x00000014 /* 4 (RET) */,
},
{ /* ScmObj d1128 */
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_OBJ(&scm__rc.d1131[1]),
SCM_NIL,
SCM_OBJ(&scm__rc.d1131[0]),
SCM_OBJ(&scm__rc.d1128[4]),
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_MAKE_INT(10U),
SCM_NIL,
SCM_UNDEFINED,
SCM_OBJ(&scm__rc.d1128[19]),
SCM_OBJ(&scm__rc.d1128[21]),
SCM_NIL,
SCM_UNDEFINED,
SCM_OBJ(&scm__rc.d1128[23]),
SCM_UNDEFINED,
SCM_OBJ(&scm__rc.d1128[25]),
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNDEFINED,
SCM_OBJ(&scm__rc.d1128[23]),
SCM_UNDEFINED,
SCM_OBJ(&scm__rc.d1128[36]),
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNBOUND,
SCM_UNDEFINED,
SCM_OBJ(&scm__rc.d1128[23]),
SCM_UNDEFINED,
SCM_OBJ(&scm__rc.d1128[44]),
SCM_OBJ(&scm__rc.d1128[46]),
SCM_NIL,
SCM_UNDEFINED,
SCM_OBJ(&scm__rc.d1128[48]),
SCM_UNDEFINED,
SCM_OBJ(&scm__rc.d1128[50]),
SCM_UNDEFINED,
SCM_OBJ(&scm__rc.d1128[48]),
SCM_UNDEFINED,
SCM_OBJ(&scm__rc.d1128[54]),
SCM_UNBOUND,
SCM_UNBOUND,
},
};
static ScmCompiledCode *toplevels[] = {
SCM_COMPILED_CODE(SCM_OBJ(&scm__rc.d1131[3])),
SCM_COMPILED_CODE(SCM_OBJ(&scm__rc.d1131[5])),
NULL /*termination*/
};
SCM_EXTENSION_ENTRY void Scm_Init_even__odd() {
Scm_SelectModule(SCM_MODULE(SCM_OBJ(Scm_GaucheModule())));
SCM_INIT_EXTENSION(even_odd);
scm__rc.d1128[1] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[0])),TRUE); /* even-odd */
scm__rc.d1128[0] = SCM_OBJ(Scm_FindModule(SCM_SYMBOL(scm__rc.d1128[1]), SCM_FIND_MODULE_CREATE)); /* module even-odd */
Scm_SelectModule(SCM_MODULE(scm__rc.d1128[0]));
Scm_SelectModule(SCM_MODULE(SCM_OBJ(Scm_GaucheModule())));
Scm_SelectModule(SCM_MODULE(scm__rc.d1128[0]));
scm__rc.d1128[2] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[1])),TRUE); /* %even? */
SCM_COMPILED_CODE(SCM_OBJ(&scm__rc.d1131[0]))->name = scm__rc.d1128[2];/* (even?&odd?$ %even?) */
scm__rc.d1128[3] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[2])),TRUE); /* %odd? */
SCM_COMPILED_CODE(SCM_OBJ(&scm__rc.d1131[1]))->name = scm__rc.d1128[3];/* (even?&odd?$ %odd?) */
scm__rc.d1128[8] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[3])),TRUE); /* even?&odd?$ */
SCM_COMPILED_CODE(SCM_OBJ(&scm__rc.d1131[2]))->name = scm__rc.d1128[8];/* even?&odd?$ */
scm__rc.d1128[9] = Scm_MakeIdentifier(SCM_SYMBOL(scm__rc.d1128[8]), Scm_FindModule(SCM_SYMBOL(scm__rc.d1128[1]), SCM_FIND_MODULE_CREATE),
SCM_NIL); /* even-odd#even?&odd?$ */
scm__rc.d1128[10] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[4])),TRUE); /* %toplevel */
SCM_COMPILED_CODE(SCM_OBJ(&scm__rc.d1131[3]))->name = scm__rc.d1128[10];/* %toplevel */
((ScmWord*)SCM_OBJ(&scm__rc.d1130[36]))[3] = SCM_WORD(scm__rc.d1128[9]);
scm__rc.d1128[12] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[5])),TRUE); /* + */
scm__rc.d1128[11] = Scm_MakeIdentifier(SCM_SYMBOL(scm__rc.d1128[12]), Scm_FindModule(SCM_SYMBOL(scm__rc.d1128[1]), SCM_FIND_MODULE_CREATE),
SCM_NIL); /* even-odd#+ */
scm__rc.d1128[14] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[6])),TRUE); /* pa$ */
scm__rc.d1128[13] = Scm_MakeIdentifier(SCM_SYMBOL(scm__rc.d1128[14]), Scm_FindModule(SCM_SYMBOL(scm__rc.d1128[1]), SCM_FIND_MODULE_CREATE),
SCM_NIL); /* even-odd#pa$ */
scm__rc.d1128[16] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[7])),TRUE); /* zero? */
scm__rc.d1128[15] = Scm_MakeIdentifier(SCM_SYMBOL(scm__rc.d1128[16]), Scm_FindModule(SCM_SYMBOL(scm__rc.d1128[1]), SCM_FIND_MODULE_CREATE),
SCM_NIL); /* even-odd#zero? */
scm__rc.d1128[17] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[8])),TRUE); /* map */
scm__rc.d1128[18] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[9])),TRUE); /* iota */
SCM_SET_CAR(SCM_OBJ(&scm__rc.d1128[21]), scm__rc.d1128[18]);
SCM_SET_CAR(SCM_OBJ(&scm__rc.d1128[25]), scm__rc.d1128[3]);
SCM_SET_CAR(SCM_OBJ(&scm__rc.d1128[27]), scm__rc.d1128[17]);
scm__rc.d1128[30] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[10])),TRUE); /* debug-print-pre */
scm__rc.d1128[31] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[11])),TRUE); /* gauche.vm.debugger */
scm__rc.d1128[29] = Scm_MakeIdentifier(SCM_SYMBOL(scm__rc.d1128[30]), Scm_FindModule(SCM_SYMBOL(scm__rc.d1128[31]), SCM_FIND_MODULE_CREATE),
SCM_NIL); /* gauche.vm.debugger#debug-print-pre */
scm__rc.d1128[32] = Scm_MakeIdentifier(SCM_SYMBOL(scm__rc.d1128[18]), Scm_FindModule(SCM_SYMBOL(scm__rc.d1128[1]), SCM_FIND_MODULE_CREATE),
SCM_NIL); /* even-odd#iota */
scm__rc.d1128[33] = Scm_MakeIdentifier(SCM_SYMBOL(scm__rc.d1128[17]), Scm_FindModule(SCM_SYMBOL(scm__rc.d1128[1]), SCM_FIND_MODULE_CREATE),
SCM_NIL); /* even-odd#map */
scm__rc.d1128[35] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[12])),TRUE); /* debug-print-post */
scm__rc.d1128[34] = Scm_MakeIdentifier(SCM_SYMBOL(scm__rc.d1128[35]), Scm_FindModule(SCM_SYMBOL(scm__rc.d1128[31]), SCM_FIND_MODULE_CREATE),
SCM_NIL); /* gauche.vm.debugger#debug-print-post */
SCM_SET_CAR(SCM_OBJ(&scm__rc.d1128[36]), scm__rc.d1128[2]);
SCM_SET_CAR(SCM_OBJ(&scm__rc.d1128[38]), scm__rc.d1128[17]);
scm__rc.d1128[41] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[13])),TRUE); /* cdr */
scm__rc.d1128[40] = Scm_MakeIdentifier(SCM_SYMBOL(scm__rc.d1128[41]), Scm_FindModule(SCM_SYMBOL(scm__rc.d1128[1]), SCM_FIND_MODULE_CREATE),
SCM_NIL); /* even-odd#cdr */
scm__rc.d1128[43] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[14])),TRUE); /* null? */
scm__rc.d1128[42] = Scm_MakeIdentifier(SCM_SYMBOL(scm__rc.d1128[43]), Scm_FindModule(SCM_SYMBOL(scm__rc.d1128[1]), SCM_FIND_MODULE_CREATE),
SCM_NIL); /* even-odd#null? */
SCM_SET_CAR(SCM_OBJ(&scm__rc.d1128[44]), scm__rc.d1128[18]);
SCM_SET_CAR(SCM_OBJ(&scm__rc.d1128[46]), scm__rc.d1128[17]);
SCM_SET_CAR(SCM_OBJ(&scm__rc.d1128[50]), scm__rc.d1128[3]);
SCM_SET_CAR(SCM_OBJ(&scm__rc.d1128[52]), scm__rc.d1128[17]);
SCM_SET_CAR(SCM_OBJ(&scm__rc.d1128[54]), scm__rc.d1128[2]);
SCM_SET_CAR(SCM_OBJ(&scm__rc.d1128[56]), scm__rc.d1128[17]);
scm__rc.d1128[58] = Scm_MakeSymbol(SCM_STRING(SCM_OBJ(&scm__sc.d1129[15])),TRUE); /* %test */
SCM_COMPILED_CODE(SCM_OBJ(&scm__rc.d1131[4]))->name = scm__rc.d1128[58];/* %test */
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[5] = SCM_WORD(scm__rc.d1128[11]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[8] = SCM_WORD(scm__rc.d1128[13]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[10] = SCM_WORD(scm__rc.d1128[15]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[12] = SCM_WORD(scm__rc.d1128[9]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[19] = SCM_WORD(scm__rc.d1128[29]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[27] = SCM_WORD(scm__rc.d1128[32]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[29] = SCM_WORD(scm__rc.d1128[33]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[35] = SCM_WORD(scm__rc.d1128[34]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[42] = SCM_WORD(scm__rc.d1128[29]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[50] = SCM_WORD(scm__rc.d1128[32]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[52] = SCM_WORD(scm__rc.d1128[33]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[58] = SCM_WORD(scm__rc.d1128[34]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[64] = SCM_WORD(scm__rc.d1128[40]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[66] = SCM_WORD(scm__rc.d1128[42]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[68] = SCM_WORD(scm__rc.d1128[9]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[75] = SCM_WORD(scm__rc.d1128[29]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[82] = SCM_WORD(scm__rc.d1128[32]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[87] = SCM_WORD(scm__rc.d1128[32]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[89] = SCM_WORD(scm__rc.d1128[33]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[91] = SCM_WORD(scm__rc.d1128[33]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[97] = SCM_WORD(scm__rc.d1128[34]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[104] = SCM_WORD(scm__rc.d1128[29]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[111] = SCM_WORD(scm__rc.d1128[32]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[116] = SCM_WORD(scm__rc.d1128[32]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[118] = SCM_WORD(scm__rc.d1128[33]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[120] = SCM_WORD(scm__rc.d1128[33]);
((ScmWord*)SCM_OBJ(&scm__rc.d1130[41]))[124] = SCM_WORD(scm__rc.d1128[34]);
scm__rc.d1128[59] = Scm_MakeIdentifier(SCM_SYMBOL(scm__rc.d1128[58]), Scm_FindModule(SCM_SYMBOL(scm__rc.d1128[1]), SCM_FIND_MODULE_CREATE),
SCM_NIL); /* even-odd#%test */
SCM_COMPILED_CODE(SCM_OBJ(&scm__rc.d1131[5]))->name = scm__rc.d1128[10];/* %toplevel */
((ScmWord*)SCM_OBJ(&scm__rc.d1130[167]))[3] = SCM_WORD(scm__rc.d1128[59]);
Scm_VMExecuteToplevels(toplevels);
}
(define-module even-odd (export-all))
(select-module even-odd)
(define (even?&odd?$ pred %zero?)
(define (%even? x)
(or (%zero? x)
(%odd? (pred x))))
(define (%odd? x)
(and (not (%zero? x))
(%even? (pred x))))
(values %even? %odd?))
(define (%test)
(receive (%even? %odd?) (even?&odd?$ (pa$ + -1) zero?)
#?=(map %odd? (iota 10))
#?=(map %even? (iota 10))
)
(receive (%even? %odd?) (even?&odd?$ cdr null?)
#?=(map %odd? (map iota (iota 10)))
#?=(map %even? (map iota (iota 10)))
)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment