/*-*-MACSYMA-*-*/ EVAL_WHEN([TRANSLATE,BATCH,DEMO], IF GET('SHAREM,'VERSION)=FALSE THEN LOAD(AUTOLO))$ HERALD_PACKAGE(CONTRL)$ /* COND and CASEQ */ EVAL_WHEN([TRANSLATE,BATCH,DEMO,LOADFILE], COND([PAIR_SEQUENCE])::= IF PAIR_SEQUENCE=[] THEN BUILDQ([],FALSE) ELSE BLOCK([PRED:POP(PAIR_SEQUENCE), FORM:IF PAIR_SEQUENCE=[] THEN ERROR("Odd number of COND args") ELSE POP(PAIR_SEQUENCE)], IF PRED=TRUE THEN BUILDQ([FORM],FORM) ELSE BUILDQ([PRED,FORM,PAIR_SEQUENCE], IF PRED THEN FORM ELSE COND(SPLICE(PAIR_SEQUENCE)))) )$ CASEQ(EXP,[PAIRS])::= BLOCK([PREDT,STATEMENT], COND(NOT ATOM(EXP), BUILDQ([G:?GENTEMP(),EXP,PAIRS],BLOCK([G:EXP],CASEQ(G,SPLICE(PAIRS)))), PAIRS=[],BUILDQ([],FALSE), (PREDT:POP(PAIRS),IF LISTP(PREDT) AND LENGTH(PREDT)=1 THEN PREDT:PREDT[1],PAIRS=[]), ERROR("Odd number of CASEQ case args"), TRUE, (STATEMENT:POP(PAIRS), IF MEMBER(PREDT,'[OTHERWISE,TRUE]) THEN BUILDQ([STATEMENT,EXP],STATEMENT) ELSE BUILDQ([CONDITION:IF LISTP(PREDT) THEN BUILDQ([EXP,PREDT],MEMBER(EXP,'PREDT)) ELSE BUILDQ([EXP,PREDT],EXP='PREDT), STATEMENT,EXP,PAIRS], IF CONDITION THEN STATEMENT ELSE CASEQ(EXP,SPLICE(PAIRS))))))$