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/05 12:00] elisagat:tutorial:basic [2007/04/05 14:04] elisag
Line 153: Line 153:
 In AmbientTalk, blocks are merely syntactic sugar for anonymous closures (aka lambdas).  Blocks are creating using the {} braces in the form of: In AmbientTalk, blocks are merely syntactic sugar for anonymous closures (aka lambdas).  Blocks are creating using the {} braces in the form of:
 <code> <code>
-{ | <parlist> | <body>}+{ |<parlist>| <body> }
 </code> </code>
 If the block do not require any parameter, the |<parlist>| can be omitted.  Consider a basic block to sum two numbers: If the block do not require any parameter, the |<parlist>| can be omitted.  Consider a basic block to sum two numbers:
Line 162: Line 162:
 Note that the argument list passed to the block can define the different types of arguments previously explained. Note that the argument list passed to the block can define the different types of arguments previously explained.
 <code> <code>
->{ |a, b, @rest| def total := a + b; foreach: { |el| total := total + el} in: rest; total }(1,2,3)+>{|a, b, @rest|  
 +   def total := a + b;  
 +   foreach: { |el| total := total + el} in: rest; total  
 + }(1,2,3)
 >>6 >>6
 </code> </code>
 AmbientTalk doesn’t support function assigment. However, one can assign blocks to variables. In order to call the block the name of the variable must be used. If the block defined parameters, these are required to the call as argument list. What follows is an example of such manipulation: AmbientTalk doesn’t support function assigment. However, one can assign blocks to variables. In order to call the block the name of the variable must be used. If the block defined parameters, these are required to the call as argument list. What follows is an example of such manipulation:
 <code> <code>
->def square := { |x| x * x}+>def square := { |x| x * x }
 >><closure:lambda> >><closure:lambda>
 >square(1,2) >square(1,2)
 >>3 >>3
 </code> </code>
at/tutorial/basic.txt · Last modified: 2020/02/09 22:05 by elisag