#include <llambda.hpp>
Inheritance diagram for LExpressionLambda:
This object represents a closure, that is, the thing created by #'(lambda (...) ...), or by DEFUN, or FLET.
Definition at line 63 of file llambda.hpp.
Public Member Functions | |
LExpressionLambda (const LContextRef &a_cont, const SReference &lambda, const SReference &body) | |
The constructor. | |
virtual void | DoApply (int paramc, const SReference *paramv, IntelibContinuation &cont) const |
Perform application to the given parameters. | |
virtual SString | TextRepresentation () const |
Text representation of the S-expression. | |
void | Apply (int paramc, const SReference *paramv, IntelibContinuation &cont) const |
const IntelibTypeId & | TermType () const |
Actual S-expression type. | |
bool | IsChangeable () const |
Can it be changed during the lifetime of the object? | |
virtual SExpression * | Clone () const |
Clone a changeable object. | |
virtual bool | SpecificEql (const SExpression *) const |
Are the two objects EQL (while not EQ). | |
SReference & | GetBody () |
Get the body. | |
Static Public Attributes | |
static IntelibTypeId | TypeId |
The type identifier. | |
Protected Member Functions | |
virtual | ~LExpressionLambda () |
bool | CanDie () |
Is it OK to delete the object now? | |
void | DoAnalyseLambdaList (const SReference &rest, int n) |
Protected Attributes | |
int | min_param |
int | max_param |
LContextRef | context |
SReference | lambda_list |
LExpressionSymbol ** | lambda_vector |
LExpressionSymbol * | lambda_rest |
int | lambda_length |
SReference | body |
|
The constructor.
Definition at line 64 of file llambda.cpp. |
|
Definition at line 73 of file llambda.cpp. |
|
Perform application to the given parameters. This method actually does all the job; however, you'd better use the SExpressionFunction::Apply() method as it is more general. Furthermore, you generally won't need to do even so; better construct the appropriate form and LReference::Evaluate() it. This is because the application is actually only scheduled to be done within the given continuation, and you'll need yourself to make the continuation run to get the result of the application. Implements SExpressionFunction. Definition at line 96 of file llambda.cpp. References PTheEmptyList. |
|
Text representation of the S-expression. Returns the text string which represents the given S-expression as for real Lisp (for example, (25 36 49)) Implements SExpression. Definition at line 118 of file llambda.cpp. |
|
Definition at line 24 of file lispform.cpp. References SExpressionFunction::DoApply(), SExpressionFunction::max_param, and SExpressionFunction::min_param. |
|
Actual S-expression type.
Definition at line 195 of file sexpress.hpp. Referenced by SReference::DynamicCastGetPtr(), SchReference::IsEql(), LReference::IsEql(), SReference::SimpleCastGetPtr(), SchReference::TextRepresentation(), and LReference::TextRepresentation(). |
|
Can it be changed during the lifetime of the object?
Definition at line 198 of file sexpress.hpp. References IntelibTypeId::IsChangeable(). |
|
Clone a changeable object. The method should return the pointer created with new
Reimplemented in SExpressionBacklink, SExpressionCons, SExpressionHashTable, SExpressionRawBuffer, and SExpressionVector. Definition at line 214 of file sexpress.hpp. |
|
Are the two objects EQL (while not EQ). This function is overriden by those SExpressions able to be EQL while being not EQ.
Reimplemented in SExpressionInt, SExpressionFloat, SExpressionChar, and SExpressionString. Definition at line 235 of file sexpress.hpp. Referenced by SchReference::IsEql(), and LReference::IsEql(). |
|
Is it OK to delete the object now? Our children have no access to the private attribute RefCount and should never need it except when checking if the destruction is not an error. This solves the problem. Definition at line 53 of file refcount.hpp. |
|
Definition at line 36 of file llambda.cpp. References SExpressionCons::Car(), SExpressionCons::Cdr(), SReference::DynamicCastGetPtr(), SReference::GetPtr(), INTELIB_ASSERT, LispLambdaBody::lambda_length, LispLambdaBody::lambda_rest, and LispLambdaBody::lambda_vector. Referenced by LispLambdaBody::LispLambdaBody(). |
|
Get the body.
Definition at line 56 of file llambda.hpp. References LispLambdaBody::body. |
|
The type identifier.
Reimplemented from SExpressionFunction. |
|
Definition at line 41 of file lispform.hpp. Referenced by SExpressionFunction::Apply(), and SExpressionFunction::SExpressionFunction(). |
|
Definition at line 41 of file lispform.hpp. Referenced by SExpressionFunction::Apply(), and SExpressionFunction::SExpressionFunction(). |
|
Definition at line 41 of file llambda.hpp. |
|
Definition at line 42 of file llambda.hpp. |
|
Definition at line 43 of file llambda.hpp. Referenced by LispLambdaBody::DoAnalyseLambdaList(), and LispLambdaBody::~LispLambdaBody(). |
|
Definition at line 44 of file llambda.hpp. Referenced by LispLambdaBody::DoAnalyseLambdaList(). |
|
Definition at line 45 of file llambda.hpp. Referenced by LispLambdaBody::DoAnalyseLambdaList(). |
|
Definition at line 46 of file llambda.hpp. Referenced by LispLambdaBody::GetBody(). |