Example Lambda send 008

 

 

Description

In this example, we will first define a simple Lambda that simply takes a number and computes the square of that number. We will use the defmethod to install the message named: square, and the associated Lambda containing the single statement required to compute the square of an input number. In order to demonstrate the send command for an Lambda object, we will define a second Lambda that will become the argument of the square message. The send command will determine which Methods Dictionary to use based on the type of the argument of the message. Since we want to install the square message and its method, we need to specify the first argument as an Lambda object.

 

Details

Add a method named square which will compute the square of a number and install the message and the method in the Methods dictionary. Note, the Lambda argument is necessary for the send message to work but is not need by the square message.

(defmethod Lambda: square: (anLambda aNum) (* aNum aNum) ) Returns: #<Dictionary 123456>

Define a function aNumberLambda that contains a persistent variable containing a number, p1. The persistent variable is set by an argument, x.

(defun aNumLambda (x) pvars: (p1) (setq p1 x)) Returns: #<Lambda 123456>

Initialize the persistent variable.

(aNumLambda 10) Returns: 10

Invoke the method named square to compute the square of a number

(send square: aNumLambda aNumLambda.p1) Returns: 100

The method can be invoked simply by name:

(square: aNumLambda aNumLambda.p1) Returns: 100

Notes and Hints

Dissecting the send command involves understanding the methods dictionary of any Analytic Information Server type. In general the send command is translated as a reference into the methods dictionary:

((ref (methodsOf (type object)) methodName object))

The statement :

(send square: aNumLambda aNumLambda .p1)

is translated into

((ref (methodsOf (type aNumLambda )) square: ) aNumLambda aNumLambda.p1)

Each statement segment results in:

(type aNumLambda) Returns: Lambda:
(methodsOf (type aNumLambda)) Returns: #<Dictionary 123456>
(ref (methodsOf (type aNumLambda)) square: ) Returns: #<Lambda 123456>
((ref (methodsOf (type aNumLambda)) square: ) aNumLambda aNumLambda.p1) Returns: 100

 

Related Examples

Here are examples of the send function at work.

BitVector send 018 Character send 011 CpxVector send 028 Date send 013
Dictionary send 004 Directory send 005 FltVector send 015 Function send 014
IntVector send 016 Lambda send 008 Lambda send 009 Matrix send 008
NumMatrix send 027 NumVector send 017 Number send 012 Pair send 019
ShortVector send 017 String send 001 Structure send 003 Symbol send 002
Vector send 006 Void send 009

 

Function Links

Here is the link to the current function used in this example.

send

Here are a number of links to other related functions.

addMethod(#void) defMethod(#void) methodsOf(#void)

 

Argument Types

Here are the links to the data types of the arguments used in this example.

Lambda Dictionary

Here are a number of links to examples having similar argument types.

BitVector addMethod 023 BitVector defmethod 020 BitVector methodsOf 021 BitVector send 018
Boolean addMethod 011 Boolean addMethod 012 Boolean defmethod 012 Boolean send 010
Brick addMethod 008 Brick defmethod 025 Brick methodsOf 024 Brick send 027
Character addMethod 013 Character defmethod 013 Character methodsOf 013 Character send 011
Context debug 001 Context debugBrowsableProcs 001 Context disassemble 001 Context globalBinding 001
Context inspect 001 CpxVector addMethod 028 CpxVector send 028 Date addMethod 015
Date addMethod 016 Date defmethod 015 Date methodsOf 015 Date send 013
Dictionary addMethod 005 Dictionary binarySearch 002 Dictionary cdr 003 Dictionary compare 004
Dictionary compareEQ 004 Dictionary compareGE 004 Dictionary compareGT 004 Dictionary compareLE 004
Dictionary compareLT 004 Dictionary compareNE 004 Dictionary comparison functions 004 Dictionary copy 002
Dictionary count 002 Dictionary defMethod 006 Dictionary delete 003 Dictionary delete 004
Dictionary insert 002 Dictionary inside 002 Dictionary isAtom 002 Dictionary isBound 002
Dictionary isDictionary 001 Dictionary isEqual 002 Dictionary isIdentical 002 Dictionary isInside 002
Dictionary isMember 002 Dictionary isObject 004 Dictionary isType 006 Dictionary length 005
Dictionary makeDictionary 001 Dictionary map 002 Dictionary mapc 002 Dictionary member 002
Dictionary methodsOf 007 Dictionary new 004 Dictionary objectToDictionary 001 Dictionary objectToDictionary 002
Dictionary objectToDictionary 003 Dictionary objectToDictionary 004 Dictionary ref 007 Dictionary ref 008
Dictionary ref 009 Dictionary refAttributes 002 Dictionary refValues 002 Dictionary remove 002
Dictionary resize 002 Dictionary send 004 Dictionary setAttributes 002 Dictionary setCdr 001
Dictionary setCdr 002 Dictionary setq 007 Dictionary setq 008 Dictionary setq 009
Dictionary sizeof 004 Dictionary sort 003 Dictionary sort 004 Dictionary sort 005
Dictionary type 007 Directory addMethod 006 Directory defMethod 007 Directory isDirectory 001
Directory new 006 Directory send 005 FltVector addMethod 019 FltVector defmethod 017
FltVector methodsOf 017 FltVector send 015 Function addMethod 017 Function addMethod 018
Function defmethod 016 Function methodsOf 016 Function send 014 IntVector addMethod 020
IntVector defmethod 018 IntVector methodsOf 018 IntVector send 016 Lambda argCount 001
Lambda argFetch 001 Lambda balance 001 Lambda callcc 001 Lambda compare 008
Lambda compareEQ 008 Lambda compareGE 008 Lambda compareGT 008 Lambda compareLE 008
Lambda compareLT 008 Lambda compareNE 004 Lambda compile 001 Lambda copy 008
Lambda debug 001 Lambda debugBrowsableProcs 001 Lambda defchild 001 Lambda define 001
Lambda define(macro) 001 Lambda defmacro 001 Lambda defmacro 002 Lambda deforphan 001
Lambda defriend 001 Lambda defun 001 Lambda defun 002 Lambda disassemble 001
Lambda eval 001 Lambda exportTab 001 Lambda globalBinding 001 Lambda importTab 001
Lambda inspect 001 Lambda isLambda 001 Lambda lambda 001 Lambda makeLambda 001
Lambda myself 001 Lambda new 001 Lambda new 002 Lambda new 003
Lambda onError 001 Lambda send 008 Lambda send 009 Lambda setq 015
Lambda type 011 List addMethod 025 List defmethod 022 List methodsOf 022
List send 020 Matrix addMethod 008 Matrix defMethod 009 Matrix send 008
NumMatrix addMethod 027 NumMatrix defmethod 024 NumMatrix send 027 NumVector addMethod 021
NumVector defmethod 019 NumVector methodsOf 019 NumVector send 017 Number addMethod 014
Number defmethod 014 Number methodsOf 014 Number send 012 ObjVector addMethod 022
ObjectRepository addMethod 026 ObjectRepository defmethod 023 ObjectRepository detachLibrarian 001 ObjectRepository methodsOf 023
ObjectRepository refLibrarian 001 ObjectRepository send 026 Pair addMethod 024 Pair defmethod 021
Pair methodsOf 021 Pair send 019 PcodeVector methodsOf 020 ShortVector addMethod 021
ShortVector defmethod 019 ShortVector methodsOf 019 ShortVector send 017 String addMethod 001
String defMethod 001 String defMethod 002 String isChar 001 String isCharAlphabetic 001
String isCharAlphanumeric 001 String isCharLowercase 001 String isCharName 001 String isCharNumeric 001
String isCharUppercase 001 String isCharWhitespace 001 String isEqual 001 String isEqual 002
String isObject 001 String isString 001 String isText 001 String isType 001
String isType 002 String isType 003 String methodsOf 001 String methodsOf 002
String methodsOf 003 String parse 001 String send 001 String sizeof 001
String string 001 String string 002 String string 003 String type 001
Structure addMethod 003 Structure addMethod 004 Structure defmethod 004 Structure defmethod 005
Structure methodsOf 005 Structure send 003 Symbol addMethod 002 Symbol defMethod 003
Symbol isCharName 002 Symbol isCharNumeric 002 Symbol isObject 002 Symbol isSymbol 001
Symbol isType 004 Symbol methodsOf 004 Symbol send 002 Symbol sizeof 002
Symbol type 002 Vector addMethod 007 Vector defmethod 008 Vector send 006
Void addMethod 009 Void addMethod 010 Void defmethod 010 Void defmethod 011
Void send 009

Analytic Information Server (AIS)

AIS Component Systems

  • Smartbase Engine
  • QT C++ Libraries
  • MySQL Relational Database
  • AIS Lisp Libraries
  • Rapid Analytic Demo IDE