Exemple #1
0
sExpression *evalSequence(sList *exps, sEnvironment *env){
  if(isLastExp(exps)){
    return eval(firstExp(exps), env);
  }else{
    eval(firstExp(exps), env);
    return evalSequence(restExp(exps), env);
  }
}
Exemple #2
0
void sequenceToExp(Register result, Register seq)
{
    if (isNull(seq))
	copyReg(result, seq);
    else {
	isLastExp(result, seq);
	if (isTrue(result))
	    firstExp(result, seq);
	else
	    makeBegin(result, seq);
    }
}
Exemple #3
0
Obj transformOr(Obj expr) {
    Obj seq = boolExps(expr);

    if (noExps(seq)) return FALSEOBJ;

    Obj first = firstExp(seq);

    List* cdr = GETLIST(seq)->cdr;
    Obj rest = LISTOBJ(makeList(OROBJ, cdr));

    List* ifTrans = makeList(
        IFOBJ, makeList(first, makeList(TRUEOBJ, makeList(rest, NULL))));

    return LISTOBJ(ifTrans);
}