www.delorie.com/gnu/docs/guile/guile_123.html   search  
 
Buy GNU books!


Guile Reference Manual

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

18.2.5.4 Closures

[FIXME: this needs to be further subbed, but texinfo has no subsubsub]

A closure is a procedure object, generated as the value of a lambda expression in Scheme. The representation of a closure is straightforward -- it contains a pointer to the code of the lambda expression from which it was created, and a pointer to the environment it closes over.

In Guile, each closure also has a property list, allowing the system to store information about the closure. I'm not sure what this is used for at the moment -- the debugger, maybe?

Macro: int SCM_CLOSUREP (SCM x)
Return non-zero iff x is a closure.

Macro: SCM SCM_PROCPROPS (SCM x)
Return the property list of the closure x. The results are undefined if x is not a closure.

Macro: void SCM_SETPROCPROPS (SCM x, SCM p)
Set the property list of the closure x to p. The results are undefined if x is not a closure.

Macro: SCM SCM_CODE (SCM x)
Return the code of the closure x. The result is undefined if x is not a closure.

This function should probably only be used internally by the interpreter, since the representation of the code is intimately connected with the interpreter's implementation.

Macro: SCM SCM_ENV (SCM x)
Return the environment enclosed by x. The result is undefined if x is not a closure.

This function should probably only be used internally by the interpreter, since the representation of the environment is intimately connected with the interpreter's implementation.


  webmaster     delorie software   privacy  
  Copyright 2003   by The Free Software Foundation     Updated Jun 2003