morph

 

 

Description

The morph function performs normal Analytic Information Server macro substitution on the input argument, {input}. The input argument {input} may be any Lisp form or forms enclosed in a list. Normally the morph function receives the output of the lisp function. The output of the morph function is a Lisp form, which is the input argument after it has been transformed by macro substitution. Normally the output of morph is input to the compile function, since the morph and lisp functions are called automatically when entering Analytic Information Server expressions.

The second argument {altRule}, called the alternative rule function, is optional. If the {altRule} function is specified, this function will perform the macro substitution in place of Normal Analytic Information Server macro substitution rules. The {altRule} function must be a function of one argument. The morph function will repeatedly send the {altRule} function every sub-list within the original input. If the {altRule} function wishes to pass a sub-list without macro substitution, it should return the Boolean value false. If the {altRule} function wishes to perform macro substitution on a sub-list, it should return the Lisp form to be substituted in place of the sub list.

When to use

The morph function is used to perform macro substitution. Since morph supports alternative rule functions, the substitution can be as complex as desired by the Lisp programmer.

 

Syntax

(morph input altRule altFailure)



Name Description AIS Types
input A Lisp form represented as a list.List
altRule Optional function argument. If present, it must have a single argument, and it will replace the normal Analytic Information Server macro substitution rules. It must return the lisp form to be substituted, or pass a value ---
altFailure Optional argument. The altFailure is the value to be recognized by morph that the substitution will not take place. If the altRule function returns the altFailure value, the morph function will not substitute. If the altRule function returns a value other than the altFailure value, morph will perform the substitution. If the altFailure argument is not present, morph will assume that the failure value is the Boolean value false.---


Returns:

A Lisp form containing any macro substitutions.

 

Examples

Here are a number of links to Lambda coding examples which contain this instruction in various use cases.

Example_List_morph_001

This example shows simple macro substitution using the morph function.

Example_List_morph_002

This example shows macro substitution using an alternative rule function {altRule} and alternative failure {altFailure} options.

 

Argument Types

Here are the links to the data types of the function arguments.

Pair List Boolean

Here are also a number of links to functions having arguments with any of these data types.

abortTransaction(ObjectRepository) addMethod(BitVector) addMethod(Boolean) addMethod(Brick)
addMethod(Character) addMethod(CpxVector) addMethod(Date) addMethod(Dictionary)
addMethod(Directory) addMethod(FltVector) addMethod(Function) addMethod(IntVector)
addMethod(List) addMethod(Matrix) addMethod(NumMatrix) addMethod(NumVector)
addMethod(Number) addMethod(ObjVector) addMethod(ObjectRepository) addMethod(Pair)
addMethod(PcodeVector) addMethod(ShortVector) addMethod(String) addMethod(Structure)
addMethod(Symbol) addMethod(Vector) addMethod(Void) append(BitVector)
append(Complex) append(CpxVector) append(FltVector) append(IntVector)
append(Matrix) append(NumMatrix) append(NumVector) append(ObjVector)
append(Pair) append(ShortVector) append(String) append(Structure)
append(Symbol) append(Vector) apply(BitVector) apply(CpxVector)
apply(FltVector) apply(IntVector) apply(Matrix) apply(NumMatrix)
apply(NumVector) apply(Pair) apply(ShortVector) apply(Structure)
apply(Vector) associate(Pair) badd(Boolean) bcompareEQ(Boolean)
bcompareGE(Boolean) bcompareGT(Boolean) bcompareLE(Boolean) bcompareLT(Boolean)
bcompareNE(Boolean) bdiv(Boolean) beginTransaction(ObjectRepository) binaryInsert(CpxVector)
binaryInsert(FltVector) binaryInsert(IntVector) binaryInsert(Matrix) binaryInsert(NumMatrix)
binaryInsert(NumVector) binaryInsert(ShortVector) binaryInsert(Structure) binaryInsert(Vector)
binaryNand(Integer) binaryNor(Integer) binaryNot(Integer) binaryNxor(Integer)
binarySearch(CpxVector) binarySearch(Dictionary) binarySearch(FltVector) binarySearch(IntVector)
binarySearch(Matrix) binarySearch(NumMatrix) binarySearch(NumVector) binarySearch(ObjVector)
binarySearch(ShortVector) binarySearch(Structure) binarySearch(Vector) bitwiseAnd(Integer)
bitwiseNand(Integer) bitwiseNor(Integer) bitwiseNot(Integer) bitwiseNxor(Integer)
bitwiseOr(Integer) bitwiseShiftLeft(Integer) bitwiseShiftRight(Integer) bitwiseXor(Integer)
bmod(Boolean) bmul(Boolean) boolean(Boolean) c..r(List)
car(List) car(Pair) ccompareEQ(Character) ccompareGE(Character)
ccompareGT(Character) ccompareLE(Character) ccompareLT(Character) ccompareNE(Character)
cdr(BitVector) cdr(Brick) cdr(CpxVector) cdr(Dictionary)
cdr(Directory) cdr(FltVector) cdr(IntVector) cdr(List)
cdr(Matrix) cdr(NumMatrix) cdr(NumVector) cdr(ObjVector)
cdr(ShortVector) cdr(Structure) cdr(Vector) character(Character)
checkPointTransaction(ObjectRepository) clear(Context) clear(ObjectRepository) commitTransaction(ObjectRepository)
compareEQ(BitVector) compareEQ(Boolean) compareEQ(Brick) compareEQ(Character)
compareEQ(Complex) compareEQ(CpxVector) compareEQ(Date) compareEQ(Dictionary)
compareEQ(Directory) compareEQ(FltVector) compareEQ(Function) compareEQ(IntVector)
compareEQ(Lambda) compareEQ(List) compareEQ(Matrix) compareEQ(NumMatrix)
compareEQ(NumVector) compareEQ(Number) compareEQ(ObjVector) compareEQ(ObjectRepository)
compareEQ(Pair) compareEQ(ShortVector) compareEQ(String) compareEQ(Structure)
compareEQ(Symbol) compareEQ(Vector) compareEQ(Void) compareGE(BitVector)
compareGE(Boolean) compareGE(Brick) compareGE(Character) compareGE(Complex)
compareGE(CpxVector) compareGE(Date) compareGE(Dictionary) compareGE(Directory)
compareGE(Function) compareGE(IntVector) compareGE(Lambda) compareGE(List)
compareGE(Matrix) compareGE(NumMatrix) compareGE(Number) compareGE(ObjVector)
compareGE(ObjectRepository) compareGE(Pair) compareGE(ShortVector) compareGE(String)
compareGE(Structure) compareGE(Symbol) compareGE(Vector) compareGE(Void)
compareGT(BitVector) compareGT(Boolean) compareGT(Brick) compareGT(Character)
compareGT(Complex) compareGT(CpxVector) compareGT(Date) compareGT(Dictionary)
compareGT(Directory) compareGT(Function) compareGT(IntVector) compareGT(Lambda)
compareGT(List) compareGT(Matrix) compareGT(NumMatrix) compareGT(NumVector)
compareGT(Number) compareGT(ObjVector) compareGT(ObjectRepository) compareGT(Pair)
compareGT(ShortVector) compareGT(String) compareGT(Structure) compareGT(Symbol)
compareGT(Vector) compareGT(Void) compareLE(BitVector) compareLE(Boolean)
compareLE(Brick) compareLE(Character) compareLE(Complex) compareLE(CpxVector)
compareLE(Date) compareLE(Dictionary) compareLE(Directory) compareLE(FltVector)
compareLE(Function) compareLE(IntVector) compareLE(Lambda) compareLE(List)
compareLE(Matrix) compareLE(NumMatrix) compareLE(NumVector) compareLE(Number)
compareLE(ObjVector) compareLE(ObjectRepository) compareLE(Pair) compareLE(ShortVector)
compareLE(String) compareLE(Structure) compareLE(Symbol) compareLE(Vector)
compareLE(Void) compareLT(BitVector) compareLT(Boolean) compareLT(Brick)
compareLT(Character) compareLT(Complex) compareLT(CpxVector) compareLT(Date)
compareLT(Dictionary) compareLT(Directory) compareLT(FltVector) compareLT(Function)
compareLT(IntVector) compareLT(Lambda) compareLT(List) compareLT(Matrix)
compareLT(NumMatrix) compareLT(NumVector) compareLT(Number) compareLT(ObjVector)
compareLT(ObjectRepository) compareLT(Pair) compareLT(ShortVector) compareLT(String)
compareLT(Structure) compareLT(Symbol) compareLT(Vector) compareLT(Void)
compareNE(BitVector) compareNE(Boolean) compareNE(Brick) compareNE(Character)
compareNE(Complex) compareNE(CpxVector) compareNE(Date) compareNE(Dictionary)
compareNE(Directory) compareNE(FltVector) compareNE(Function) compareNE(IntVector)
compareNE(Lambda) compareNE(List) compareNE(Matrix) compareNE(NumMatrix)
compareNE(NumVector) compareNE(Number) compareNE(ObjVector) compareNE(ObjectRepository)
compareNE(Pair) compareNE(ShortVector) compareNE(String) compareNE(Structure)
compareNE(Symbol) compareNE(Vector) compareNE(Void) compare(BitVector)
compare(Boolean) compare(Brick) compare(Character) compare(Complex)
compare(CpxVector) compare(Date) compare(Dictionary) compare(Directory)
compare(FltVector) compare(Function) compare(IntVector) compare(Lambda)
compare(List) compare(Matrix) compare(NumMatrix) compare(NumVector)
compare(Number) compare(ObjVector) compare(ObjectRepository) compare(Pair)
compare(ShortVector) compare(String) compare(Structure) compare(Symbol)
compare(Vector) compare(Void) comparison(BitVector) comparison(Boolean)
comparison(Brick) comparison(Character) comparison(Complex) comparison(Date)
comparison(Dictionary) comparison(Directory) comparison(FltVector) comparison(Function)
comparison(IntVector) comparison(List) comparison(Matrix) comparison(NumMatrix)
comparison(NumVector) comparison(Number) comparison(ObjVector) comparison(ObjectRepository)
comparison(Pair) comparison(ShortVector) comparison(String) comparison(Structure)
comparison(Symbol) comparison(Vector) comparison(Void) compile(Lambda)
compile(List) cons(Pair) copy(BitVector) copy(Brick)
copy(CpxVector) copy(Dictionary) copy(Directory) copy(FltVector)
copy(IntVector) copy(Lambda) copy(List) copy(Matrix)
copy(NumMatrix) copy(NumVector) copy(ObjVector) copy(Pair)
copy(PcodeVector) copy(ShortVector) copy(Structure) copy(Vector)
count(Dictionary) count(Directory) count(List) count(Matrix)
count(NumMatrix) count(Pair) count(Structure) count(Vector)
debug(Context) debug(Lambda) delete(Dictionary) delete(Directory)
delete(FltVector) delete(IntVector) delete(List) delete(Matrix)
delete(NumMatrix) delete(NumVector) delete(ObjVector) delete(ObjectRepository)
delete(Pair) delete(ShortVector) delete(Structure) delete(Vector)
disassemble(Context) disassemble(Lambda) display(ByteVector) display(FileIO)
eval(Lambda) eval(List) exportTab(Lambda) exportTab(ObjectRepository)
fdisplay(ByteVector) fdisplay(Text) fileClose(ByteVector) fileClose(Text)
fileDisplay(ByteVector) fileDisplay(Text) fileErase(ByteVector) fileErase(Text)
fileOpen(ByteVector) fileOpen(Text) fileRead(ByteVector) fileRead(Text)
fileWrite(ByteVector) fileWrite(String) fileWrite(Text) filewriteln(ByteVector)
filewriteln(String) filewriteln(Text) findBlock(BitVector) gc(Context)
icompareEQ(Integer) icompareGE(Integer) icompareGT(Integer) icompareLE(Integer)
icompareLT(Integer) icompareNE(Integer) importTab(Lambda) importTab(ObjectRepository)
inside(BitVector) inside(Dictionary) inside(Directory) inside(IntVector)
inside(List) inside(Matrix) inside(NumMatrix) inside(NumVector)
inside(ShortVector) inside(Structure) inside(Vector) inspect(Context)
inspect(Lambda) inspect(ObjectRepository) integer(Integer) isAtom(BitVector)
isAtom(Brick) isAtom(Dictionary) isAtom(Directory) isAtom(FltVector)
isAtom(IntVector) isAtom(List) isAtom(Matrix) isAtom(NumMatrix)
isAtom(NumVector) isAtom(ObjVector) isAtom(Pair) isAtom(PcodeVector)
isAtom(ShortVector) isAtom(Structure) isAtom(Vector) isBitVector(BitVector)
isBoolean(Boolean) isBound(Dictionary) isBound(Directory) isBound(Structure)
isByteVector(ByteVector) isCharAlphabetic(ByteVector) isCharAlphabetic(String) isCharAlphabetic(Symbol)
isCharAlphanumeric(ByteVector) isCharAlphanumeric(String) isCharAlphanumeric(Symbol) isCharLowercase(ByteVector)
isCharLowercase(String) isCharLowercase(Symbol) isCharName(ByteVector) isCharName(String)
isCharName(Symbol) isCharNumeric(ByteVector) isCharNumeric(String) isCharNumeric(Symbol)
isCharUppercase(ByteVector) isCharUppercase(String) isCharUppercase(Symbol) isCharWhitespace(ByteVector)
isCharWhitespace(String) isCharWhitespace(Symbol) isCharacter(Character) isComplex(Complex)
isDate(Date) isDirectory(Directory) isEqual(BitVector) isEqual(Boolean)
isEqual(Brick) isEqual(Character) isEqual(Complex) isEqual(Date)
isEqual(Dictionary) isEqual(Directory) isEqual(FltVector) isEqual(Function)
isEqual(IntVector) isEqual(List) isEqual(Matrix) isEqual(NumMatrix)
isEqual(NumVector) isEqual(Number) isEqual(ObjVector) isEqual(Pair)
isEqual(ShortVector) isEqual(String) isEqual(Structure) isEqual(Vector)
isEqual(Void) isError(Error) isEven(Number) isExact(Number)
isFloatVector(FltVector) isIdentical(BitVector) isIdentical(Boolean) isIdentical(Brick)
isIdentical(Character) isIdentical(Complex) isIdentical(Date) isIdentical(Dictionary)
isIdentical(Directory) isIdentical(Error) isIdentical(FltVector) isIdentical(Function)
isIdentical(IntVector) isIdentical(List) isIdentical(Matrix) isIdentical(NumMatrix)
isIdentical(NumVector) isIdentical(Number) isIdentical(ObjVector) isIdentical(ObjectRepository)
isIdentical(Pair) isIdentical(PcodeVector) isIdentical(ShortVector) isIdentical(Structure)
isIdentical(Vector) isIdentical(Void) isImmediate(ObjectRepository) isInexact(Number)
isInside(BitVector) isInside(Dictionary) isInside(Directory) isInside(IntVector)
isInside(List) isInside(Matrix) isInside(NumMatrix) isInside(NumVector)
isInside(ObjVector) isInside(Pair) isInside(ShortVector) isInside(Structure)
isInside(Vector) isIntegerVector(IntVector) isInteger(Integer) isMatrix(Matrix)
isMember(BitVector) isMember(Dictionary) isMember(Directory) isMember(IntVector)
isMember(List) isMember(Matrix) isMember(NumMatrix) isMember(NumVector)
isMember(ObjVector) isMember(Pair) isMember(ShortVector) isMember(Structure)
isMember(Vector) isMoney(Number) isNegative(Number) isNull(Number)
isNull(Void) isNumberMatrix(NumMatrix) isNumberVector(NumVector) isNumber(Number)
isObjectVector(ObjVector) isObject(BitVector) isObject(Brick) isObject(ByteVector)
isObject(Dictionary) isObject(Directory) isObject(FltVector) isObject(IntVector)
isObject(List) isObject(Matrix) isObject(NumMatrix) isObject(NumVector)
isObject(ObjVector) isObject(Pair) isObject(PcodeVector) isObject(ShortVector)
isObject(String) isObject(Structure) isObject(Symbol) isObject(Vector)
isOdd(Number) isPair(List) isPair(Pair) isPcodeVector(PcodeVector)
isPositive(Number) isTransaction(ObjectRepository) isType(BitVector) isType(Boolean)
isType(Brick) isType(Character) isType(Complex) isType(Date)
isType(Dictionary) isType(Directory) isType(FltVector) isType(Function)
isType(IntVector) isType(Matrix) isType(NumMatrix) isType(NumVector)
isType(Number) isType(ObjVector) isType(ObjectRepository) isType(Pair)
isType(ShortVector) isType(String) isType(Structure) isType(Symbol)
isType(Vector) isType(Void) isVector(Vector) isZero(Number)
last(List) length(BitVector) length(Brick) length(Dictionary)
length(Directory) length(FltVector) length(IntVector) length(List)
length(Matrix) length(NumMatrix) length(NumVector) length(ObjVector)
length(ObjectRepository) length(Pair) length(PcodeVector) length(ShortVector)
length(String) length(Structure) length(Symbol) length(Vector)
lisp(Lambda) lisp(List) list(List) loadWorkspace(Context)
macroReplace(String) makeQuotedList(List) map(Dictionary) map(Directory)
map(FltVector) map(IntVector) map(List) map(Matrix)
map(NumMatrix) map(NumVector) map(Pair) map(ShortVector)
map(Structure) map(Vector) mapc(Dictionary) mapc(Directory)
mapc(FltVector) mapc(IntVector) mapc(List) mapc(Matrix)
mapc(NumMatrix) mapc(NumVector) mapc(Pair) mapc(ShortVector)
mapc(Structure) mapc(Vector) member(BitVector) member(Dictionary)
member(Directory) member(IntVector) member(List) member(Matrix)
member(NumMatrix) member(NumVector) member(ObjVector) member(ShortVector)
member(Structure) member(Vector) money(Number) morph(List)
ncompareEQ(Number) ncompareGE(Number) ncompareGT(Number) ncompareLE(Number)
ncompareLT(Number) ncompareNE(Number) new(BitVector) new(Brick)
new(ByteVector) new(CpxVector) new(Dictionary) new(Directory)
new(FltVector) new(IntVector) new(Lambda) new(Matrix)
new(NumMatrix) new(NumVector) new(ObjVector) new(ObjectRepository)
new(PcodeVector) new(ShortVector) new(String) new(Structure)
new(Symbol) new(Vector) number(Number) objectToList(List)
objectToMatrix(Matrix) objectToNumMatrix(NumMatrix) objectToNumVector(NumVector) objectToVector(Vector)
onError(Error) onError(Lambda) pair(Pair) proplist(Symbol)
proprecord(Symbol) putprop(Symbol) quote(List) ref(BitVector)
ref(Boolean) ref(Brick) ref(Character) ref(Complex)
ref(Date) ref(Dictionary) ref(Directory) ref(FltVector)
ref(Function) ref(IntVector) ref(Lambda) ref(List)
ref(Matrix) ref(NumMatrix) ref(NumVector) ref(Number)
ref(ObjVector) ref(ObjectRepository) ref(PcodeVector) ref(ShortVector)
ref(String) ref(Structure) ref(Symbol) ref(Vector)
ref(Void) remProp(Symbol) remove(BitVector) remove(Dictionary)
remove(Directory) remove(IntVector) remove(Matrix) remove(NumMatrix)
remove(NumVector) remove(ObjVector) remove(ShortVector) remove(Structure)
remove(Vector) rename(ObjectRepository) reset(Context) reverse(BitVector)
reverse(FltVector) reverse(IntVector) reverse(List) reverse(Matrix)
reverse(NumMatrix) reverse(NumVector) reverse(ObjVector) reverse(ShortVector)
reverse(Vector) saveObject(ByteVector) saveObject(Integer) saveWorkspace(Context)
send(BitVector) send(Boolean) send(Brick) send(Character)
send(CpxVector) send(Date) send(Dictionary) send(Directory)
send(FltVector) send(Function) send(IntVector) send(Lambda)
send(List) send(Matrix) send(NumMatrix) send(NumVector)
send(Number) send(ObjectRepository) send(Pair) send(ShortVector)
send(String) send(Structure) send(Symbol) send(Vector)
send(Void) setBlock(BitVector) setCar(List) setCar(Pair)
setCdr(BitVector) setCdr(Brick) setCdr(Dictionary) setCdr(Directory)
setCdr(FltVector) setCdr(IntVector) setCdr(List) setCdr(Matrix)
setCdr(NumMatrix) setCdr(NumVector) setCdr(ObjVector) setCdr(Pair)
setCdr(ShortVector) setCdr(Structure) setCdr(Vector) setLastCdr(BitVector)
setLastCdr(FltVector) setLastCdr(IntVector) setLastCdr(List) setLastCdr(Matrix)
setLastCdr(NumMatrix) setLastCdr(NumVector) setLastCdr(ObjVector) setLastCdr(Structure)
setLastCdr(Vector) set(ObjectRepository) setf(ObjectRepository) setq(BitVector)
setq(Boolean) setq(Brick) setq(Character) setq(Date)
setq(Dictionary) setq(Directory) setq(FltVector) setq(IntVector)
setq(Lambda) setq(List) setq(Matrix) setq(NumVector)
setq(Number) setq(ObjVector) setq(ObjectRepository) setq(PcodeVector)
setq(ShortVector) setq(String) setq(Structure) setq(Symbol)
setq(Vector) setq(Void) sizeof(BitVector) sizeof(Boolean)
sizeof(Brick) sizeof(ByteVector) sizeof(Character) sizeof(Complex)
sizeof(Date) sizeof(Dictionary) sizeof(Directory) sizeof(FltVector)
sizeof(Function) sizeof(IntVector) sizeof(List) sizeof(Matrix)
sizeof(NumMatrix) sizeof(NumVector) sizeof(Number) sizeof(ObjVector)
sizeof(ObjectRepository) sizeof(Pair) sizeof(PcodeVector) sizeof(ShortVector)
sizeof(String) sizeof(Structure) sizeof(Symbol) sizeof(Vector)
sizeof(Void) sort(BitVector) sort(Dictionary) sort(Directory)
sort(FltVector) sort(IntVector) sort(List) sort(Matrix)
sort(NumMatrix) sort(NumVector) sort(ObjVector) sort(ShortVector)
sort(Structure) sort(Vector) stringCiEQ(String) stringCiGE(String)
stringCiGT(String) stringCiLE(String) stringCiLT(String) stringCiNE(String)
string(Complex) string(String) subscribe(Context) substringCiEQ(String)
substringCiGE(String) substringCiGT(String) substringCiLE(String) substringCiLT(String)
substringCiNE(String) substringEQ(String) substringGE(String) substringGT(String)
substringLE(String) substringLT(String) substringNE(String) systemCheck(Context)
type(BitVector) type(Boolean) type(Brick) type(ByteVector)
type(Character) type(Complex) type(Date) type(Dictionary)
type(Directory) type(FltVector) type(Function) type(IntVector)
type(Lambda) type(Matrix) type(NumMatrix) type(NumVector)
type(Number) type(ObjVector) type(ObjectRepository) type(Pair)
type(PcodeVector) type(ShortVector) type(String) type(Structure)
type(Symbol) type(Vector) type(Void) vectorFill(BitVector)
vectorFill(FltVector) vectorFill(IntVector) vectorFill(Matrix) vectorFill(NumMatrix)
vectorFill(NumVector) vectorFill(ObjVector) vectorFill(ShortVector) vectorFill(Vector)
version(Context) writeln(ByteVector) writeln(String) writeln(Text)

How do I contact the AIS team?

You can always talk with the AIS at aiserver.sourceforge.net.