attachLibrarian

 

 

Description

The attachLibrarian function attaches the specified librarian Lambda {anLambda} to the specified ObjectRepository {aGor}. Once the attachLibrarian function returns, the ObjectRepository is no longer a simple associative memory. The database schema and the entire behavior of the ObjectRepository is now completely determined by the attached librarian Lambda. Furthermore, multiple librarian Lambdas may interact, controlling multiple ObjectRepositories, thus creating very large object databases and/or distributed object databases.

Normally, when an ObjectRepository is opened (see the new function), an ObjectRepository object is returned to the caller. This ObjectRepository object behaves, as previously described, like a simple associative memory. However, once a librarian Lambda is attached to an ObjectRepository, when an ObjectRepository is opened (see the new function), the librarian Lambda object (not the ObjectRepository object) is returned to the caller.

Once attached to the ObjectRepository, the librarian Lambda always resides on disk in the ObjectRepository. Any Analytic Information Server server opening the ObjectRepository talks with the attached librarian Lambda, not with the ObjectRepository directly. The librarian Lambda continues to treat the ObjectRepository as a simple associative memory, but the other intelligent Lambdas, end users, and Analytic Information Server servers see the ObjectRepository according to the database schema implemented by the attached librarian Lambda.

When to use

Use the attachLibrarian function to return the result the attached libriarian Lambda and not the Object Repository.

 

Syntax

(attachLibrarian aGor anLambda)



Name Description AIS Types
aGorThe ObjectRepository whose librarian Lambda is to receive the command string.ObjectRepository
anLambdaThe librarian Lambda to be attached to the ObjectRepository.Lambda


Returns:

Determined by the librarian Lambda.

 

Examples

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

Example_ObjectRepository_attachLibrarian_001

Once the librarian Lambda is attached to the ObjectRepository, all new function calls originally meant to open the ObjectRepository will return the librarian Lambda, not the ObjectRepository. When the new function creates the ObjectRepository, the ObjectRepository itself will be stored in the Lambda's persistent variable named: myOR. Whenever the ObjectRepository is open, the ObjectRepository index (always a Directory object) will be stored in the Lambda's persistent variable named: myIndex. The librarian Lambda may change the number and/or meaning of all remaining arguments. Each librarian Lambda must have the following form:

 

Argument Types

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

ObjectRepository Lambda

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) argCount(Lambda)
argFetch(Lambda) attachLibrarian(ObjectRepository) balance(Lambda) beginTransaction(ObjectRepository)
callcc(Lambda) checkPointTransaction(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)
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) debugBrowsableProcs(Context) debugBrowsableProcs(Lambda)
debug(Context) debug(Lambda) defchild(Lambda) define(macro)(Lambda)
define(Lambda) defmacro(Lambda) deforphan(Lambda) defriend(Lambda)
defun(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) detachLibrarian(ObjectRepository)
disassemble(Context) disassemble(Lambda) display(ByteVector) display(FileIO)
evalInSyncLocalContext(Context) eval(Lambda) eval(List) exportTab(Lambda)
exportTab(ObjectRepository) globalBinding(Context) globalBinding(Lambda) importTab(Lambda)
importTab(ObjectRepository) inspect(Context) inspect(Lambda) inspect(ObjectRepository)
isComplex(Complex) 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) isTransaction(ObjectRepository)
lambda(Lambda) lisp(Lambda) lisp(List) loadRepository(ObjectRepository)
macroReplace(String) makeLambda(Lambda) methodsOf(BitVector) methodsOf(Boolean)
methodsOf(Brick) methodsOf(Character) methodsOf(Complex) methodsOf(Date)
methodsOf(Dictionary) methodsOf(Directory) methodsOf(FltVector) methodsOf(Function)
methodsOf(IntVector) methodsOf(List) methodsOf(Matrix) methodsOf(NumMatrix)
methodsOf(NumVector) methodsOf(Number) methodsOf(ObjVector) methodsOf(ObjectRepository)
methodsOf(Pair) methodsOf(PcodeVector) methodsOf(ShortVector) methodsOf(String)
methodsOf(Structure) methodsOf(Symbol) methodsOf(Vector) methodsOf(Void)
myself(Lambda) 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) onError(Error) onError(Lambda) refLibrarian(ObjectRepository)
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) rename(ObjectRepository) saveImmediate(ObjectRepository)
saveRepository(ObjectRepository) 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) 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)

How do I contact the AIS team?

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