User Tools

Site Tools


at:tutorial:basic

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
at:tutorial:basic [2007/04/06 08:08] – * elisagat:tutorial:basic [2007/04/06 08:12] elisag
Line 1: Line 1:
 <note> <note>
-**IN PROGRESS!!** +**IN PROGRESS: FIRST DRAFT!!** 
-- TODO: Talk about methods instead of functionsCheck iat chapter.+- TODO: Adding Table splicing, quasi-quoting?
 </note> </note>
 ====== Functional and Imperative Programming ====== ====== Functional and Imperative Programming ======
Line 149: Line 149:
 As you have probably noticed in the previous examples,  the value returned by a function definition is a closure. Actually in AmbientTalk functions are implemented as named closures.  As you have probably noticed in the previous examples,  the value returned by a function definition is a closure. Actually in AmbientTalk functions are implemented as named closures. 
  
-The function name can be thus used to refer the function (without calling it). This will also return a closure to that function.+The function name can be thus used to refer the function (without calling it). This will also return a closure to that function. As an example consider the //makeCell// function: 
 +<code> 
 +>def makeCell(val){ 
 +   def getter() { val} ; 
 +   def setter(v) {val := v}; 
 +  [getter, setter] 
 +
 +>><closure:makeCell> 
 +>def [get, set] := makeCell(42); 
 +>>[<closure:getter>, <closure:setter>
 +</code> 
 + 
 +This example also illustrates how a function can make public some of its local fields or functions by returning them as its return value. The get and set could be then passed as arguments to other functions such as //trustedFunction(get,set)// and  //distrustedFunction(get)//.  
 + 
  
  
at/tutorial/basic.txt · Last modified: 2020/02/09 22:05 by elisag