本文整理汇总了C++中cdr函数的典型用法代码示例。如果您正苦于以下问题:C++ cdr函数的具体用法?C++ cdr怎么用?C++ cdr使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cdr函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: doKill
// (kill 'pid ['cnt]) -> flg
any doKill(any ex) {
pid_t pid;
pid = (pid_t)evCnt(ex,cdr(ex));
return kill(pid, isCell(cddr(ex))? (int)evCnt(ex,cddr(ex)) : SIGTERM)? Nil : T;
}
开发者ID:evanrmurphy,项目名称:PicoLisp,代码行数:7,代码来源:flow.c
示例2: isLastOperand
void isLastOperand(Register result, Register ops)
{
cdr(result, ops);
makeBoolean(result, isNull(result));
}
开发者ID:jarvinet,项目名称:scheme,代码行数:5,代码来源:syntax.c
示例3: procedureBody
void procedureBody(Register result, Register procedure)
{
cdr(result, procedure);
cdr(result, result);
car(result, result);
}
开发者ID:jarvinet,项目名称:scheme,代码行数:6,代码来源:syntax.c
示例4: isLastExp
void isLastExp(Register result, Register exp)
{
cdr(result, exp);
makeBoolean(result, isNull(result));
}
开发者ID:jarvinet,项目名称:scheme,代码行数:5,代码来源:syntax.c
示例5: operands
void operands(Register result, Register exp)
{
cdr(result, exp);
}
开发者ID:jarvinet,项目名称:scheme,代码行数:4,代码来源:syntax.c
示例6: lambdaBody
void lambdaBody(Register result, Register exp)
{
cdr(result, exp);
cdr(result, result);
}
开发者ID:jarvinet,项目名称:scheme,代码行数:5,代码来源:syntax.c
示例7: ifConsequent
void ifConsequent(Register result, Register exp)
{
cdr(result, exp);
cdr(result, result);
car(result, result);
}
开发者ID:jarvinet,项目名称:scheme,代码行数:6,代码来源:syntax.c
示例8: doXor
// (xor 'any 'any) -> flg
any doXor(any x) {
bool f;
x = cdr(x), f = isNil(EVAL(car(x))), x = cdr(x);
return f ^ isNil(EVAL(car(x)))? T : Nil;
}
开发者ID:evanrmurphy,项目名称:PicoLisp,代码行数:7,代码来源:flow.c
示例9: doNil
// (nil . prg) -> NIL
any doNil(any x) {
while (isCell(x = cdr(x)))
if (isCell(car(x)))
evList(car(x));
return Nil;
}
开发者ID:evanrmurphy,项目名称:PicoLisp,代码行数:7,代码来源:flow.c
示例10: doAs
// (as 'any1 . any2) -> any2 | NIL
any doAs(any x) {
x = cdr(x);
if (isNil(EVAL(car(x))))
return Nil;
return cdr(x);
}
开发者ID:evanrmurphy,项目名称:PicoLisp,代码行数:7,代码来源:flow.c
示例11: doEval
// (eval 'any ['cnt ['lst]]) -> any
any doEval(any x) {
any y;
cell c1;
bindFrame *p;
x = cdr(x), Push(c1, EVAL(car(x))), x = cdr(x);
if (!isNum(y = EVAL(car(x))) || !(p = Env.bind))
data(c1) = EVAL(data(c1));
else {
int cnt, n, i, j;
struct { // bindFrame
struct bindFrame *link;
int i, cnt;
struct {any sym; any val;} bnd[length(x)];
} f;
x = cdr(x), x = EVAL(car(x));
j = cnt = (int)unBox(y);
n = f.i = f.cnt = 0;
do {
++n;
if ((i = p->i) <= 0 && (p->i -= cnt, i == 0)) {
for (i = 0; i < p->cnt; ++i) {
y = val(p->bnd[i].sym);
val(p->bnd[i].sym) = p->bnd[i].val;
p->bnd[i].val = y;
}
if (p->cnt && p->bnd[0].sym == At && !--j)
break;
}
} while (p = p->link);
while (isCell(x)) {
for (p = Env.bind, j = n; ; p = p->link) {
if (p->i < 0)
for (i = 0; i < p->cnt; ++i) {
if (p->bnd[i].sym == car(x)) {
f.bnd[f.cnt].val = val(f.bnd[f.cnt].sym = car(x));
val(car(x)) = p->bnd[i].val;
++f.cnt;
goto next;
}
}
if (!--j)
break;
}
next: x = cdr(x);
}
f.link = Env.bind, Env.bind = (bindFrame*)&f;
data(c1) = EVAL(data(c1));
while (--f.cnt >= 0)
val(f.bnd[f.cnt].sym) = f.bnd[f.cnt].val;
Env.bind = f.link;
do {
for (p = Env.bind, i = n; --i; p = p->link);
if (p->i < 0 && (p->i += cnt) == 0)
for (i = p->cnt; --i >= 0;) {
y = val(p->bnd[i].sym);
val(p->bnd[i].sym) = p->bnd[i].val;
p->bnd[i].val = y;
}
} while (--n);
}
return Pop(c1);
}
开发者ID:evanrmurphy,项目名称:PicoLisp,代码行数:65,代码来源:flow.c
示例12: doQuote
// (quote . any) -> any
any doQuote(any x) {return cdr(x);}
开发者ID:evanrmurphy,项目名称:PicoLisp,代码行数:2,代码来源:flow.c
示例13: doBox
// (box 'any) -> sym
any doBox(any x) {
x = cdr(x);
return consSym(EVAL(car(x)), Nil);
}
开发者ID:evanrmurphy,项目名称:PicoLisp,代码行数:5,代码来源:flow.c
示例14: evMethod
/* Evaluate method invocation */
static any evMethod(any o, any expr, any x) {
any y = car(expr);
any cls = TheCls, key = TheKey;
struct { // bindFrame
struct bindFrame *link;
int i, cnt;
struct {any sym; any val;} bnd[length(y)+3];
} f;
f.link = Env.bind, Env.bind = (bindFrame*)&f;
f.i = sizeof(f.bnd) / (2*sizeof(any)) - 2;
f.cnt = 1, f.bnd[0].sym = At, f.bnd[0].val = val(At);
while (isCell(y)) {
f.bnd[f.cnt].sym = car(y);
f.bnd[f.cnt].val = EVAL(car(x));
++f.cnt, x = cdr(x), y = cdr(y);
}
if (isNil(y)) {
while (--f.i > 0) {
x = val(f.bnd[f.i].sym);
val(f.bnd[f.i].sym) = f.bnd[f.i].val;
f.bnd[f.i].val = x;
}
f.bnd[f.cnt].sym = This, f.bnd[f.cnt++].val = val(This), val(This) = o;
y = cls, cls = Env.cls; Env.cls = y;
y = key, key = Env.key; Env.key = y;
x = prog(cdr(expr));
}
else if (y != At) {
f.bnd[f.cnt].sym = y, f.bnd[f.cnt++].val = val(y), val(y) = x;
while (--f.i > 0) {
x = val(f.bnd[f.i].sym);
val(f.bnd[f.i].sym) = f.bnd[f.i].val;
f.bnd[f.i].val = x;
}
f.bnd[f.cnt].sym = This, f.bnd[f.cnt++].val = val(This), val(This) = o;
y = cls, cls = Env.cls; Env.cls = y;
y = key, key = Env.key; Env.key = y;
x = prog(cdr(expr));
}
else {
int n, cnt;
cell *arg;
cell c[n = cnt = length(x)];
while (--n >= 0)
Push(c[n], EVAL(car(x))), x = cdr(x);
while (--f.i > 0) {
x = val(f.bnd[f.i].sym);
val(f.bnd[f.i].sym) = f.bnd[f.i].val;
f.bnd[f.i].val = x;
}
n = Env.next, Env.next = cnt;
arg = Env.arg, Env.arg = c;
f.bnd[f.cnt].sym = This, f.bnd[f.cnt++].val = val(This), val(This) = o;
y = cls, cls = Env.cls; Env.cls = y;
y = key, key = Env.key; Env.key = y;
x = prog(cdr(expr));
if (cnt)
drop(c[cnt-1]);
Env.arg = arg, Env.next = n;
}
while (--f.cnt >= 0)
val(f.bnd[f.cnt].sym) = f.bnd[f.cnt].val;
Env.bind = f.link;
Env.cls = cls, Env.key = key;
return x;
}
开发者ID:evanrmurphy,项目名称:PicoLisp,代码行数:69,代码来源:flow.c
示例15: symeListSetExtension
void
symeListSetExtension(SymeList symes, Syme syme)
{
for (; symes; symes = cdr(symes))
symeSetExtension(car(symes), syme);
}
开发者ID:pdo,项目名称:aldor,代码行数:6,代码来源:syme.c
示例16: doT
// (t . prg) -> T
any doT(any x) {
while (isCell(x = cdr(x)))
if (isCell(car(x)))
evList(car(x));
return T;
}
开发者ID:evanrmurphy,项目名称:PicoLisp,代码行数:7,代码来源:flow.c
示例17: lambdaParameters
void lambdaParameters(Register result, Register exp)
{
cdr(result, exp);
car(result, result);
}
开发者ID:jarvinet,项目名称:scheme,代码行数:5,代码来源:syntax.c
示例18: doProg
// (prog . prg) -> any
any doProg(any x) {return prog(cdr(x));}
开发者ID:evanrmurphy,项目名称:PicoLisp,代码行数:2,代码来源:flow.c
示例19: ifPredicate
void ifPredicate(Register result, Register exp)
{
cdr(result, exp);
car(result, result);
}
开发者ID:jarvinet,项目名称:scheme,代码行数:5,代码来源:syntax.c
示例20: cmp_expr
int
cmp_expr(U *p1, U *p2)
{
int n;
if (p1 == p2)
return 0;
if (p1 == symbol(NIL))
return -1;
if (p2 == symbol(NIL))
return 1;
if (isnum(p1) && isnum(p2))
return sign(compare_numbers(p1, p2));
if (isnum(p1))
return -1;
if (isnum(p2))
return 1;
if (isstr(p1) && isstr(p2))
return sign(strcmp(p1->u.str, p2->u.str));
if (isstr(p1))
return -1;
if (isstr(p2))
return 1;
if (issymbol(p1) && issymbol(p2))
return sign(strcmp(get_printname(p1), get_printname(p2)));
if (issymbol(p1))
return -1;
if (issymbol(p2))
return 1;
if (istensor(p1) && istensor(p2))
return compare_tensors(p1, p2);
if (istensor(p1))
return -1;
if (istensor(p2))
return 1;
while (iscons(p1) && iscons(p2)) {
n = cmp_expr(car(p1), car(p2));
if (n != 0)
return n;
p1 = cdr(p1);
p2 = cdr(p2);
}
if (iscons(p2))
return -1;
if (iscons(p1))
return 1;
return 0;
}
开发者ID:AnderainLovelace,项目名称:ForumlaZ-WH,代码行数:66,代码来源:misce.cpp
注:本文中的cdr函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论