at:tutorial:basic
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
at:tutorial:basic [2007/04/05 11:53] – elisag | at:tutorial:basic [2007/04/05 14:32] – elisag | ||
---|---|---|---|
Line 1: | Line 1: | ||
< | < | ||
- | **UNDER CONSTRUCTION!!** | + | **IN PROGRESS!!** |
+ | - TODO: Talk about methods instead of functions? Check iat chapter. | ||
</ | </ | ||
====== Functional and Imperative Programming ====== | ====== Functional and Imperative Programming ====== | ||
Line 151: | Line 152: | ||
===== Blocks ===== | ===== Blocks ===== | ||
- | Blocks. | ||
In AmbientTalk, | In AmbientTalk, | ||
- | { | < | + | < |
+ | { |< | ||
+ | </ | ||
If the block do not require any parameter, the |< | If the block do not require any parameter, the |< | ||
+ | < | ||
>{| a, b| a+ b} (3,2) | >{| a, b| a+ b} (3,2) | ||
>>5 | >>5 | ||
+ | </ | ||
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. | ||
- | >{ |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 | ||
+ | </ | ||
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: | ||
- | >def square := { |x| x * x} | + | < |
+ | >def square := { |x| x * x } | ||
>>< | >>< | ||
> | > | ||
>>3 | >>3 | ||
+ | </ | ||
+ | Blocks are used also to iterating over enumerations. As an example consider the equivalent definition of the //sum// function shown below: | ||
+ | < | ||
+ | >def sum (@args) { | ||
+ | args.inject: | ||
+ | } | ||
+ | >>< | ||
+ | > | ||
+ | >>6 | ||
+ | </ | ||
+ | Note that inject is a method invoked to the table //args//. We elaborate on native data types and its operations in the next section. | ||
at/tutorial/basic.txt · Last modified: 2020/02/09 22:05 by elisag