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 [2008/03/12 17:16] – tvcutsem | at:tutorial:basic [2011/05/23 13:43] – tvcutsem | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | |||
====== Functional and Imperative Programming ====== | ====== Functional and Imperative Programming ====== | ||
Line 174: | Line 173: | ||
</ | </ | ||
- | In that case, the //sum// function still accepts an arbitrary number of arguments as long as two arguments are supplied. //a// and //b// are considered as mandatory arguments of the argument list. | + | In that case, the //sum// function still accepts an arbitrary number of arguments as long as two arguments are supplied. //a// and //b// are considered as mandatory arguments of the argument list. |
+ | |||
+ | The splice operator can also be used to transform a table into an argument list for a function, for example: | ||
+ | < | ||
+ | def args := [3,4,5]; | ||
+ | > sum(1,2, @args); | ||
+ | >> 15 | ||
+ | </ | ||
+ | |||
+ | One way to think about this is that the splice operator splices the '' | ||
+ | < | ||
+ | > sum(1, | ||
+ | >> 21 | ||
+ | </ | ||
+ | |||
+ | ==== Optional Parameters ==== | ||
A function can also declare optional arguments as shown below. Optional arguments can be omitted in a function call. If this is the case, the default expression provided in their definition is evaluated and passed as argument to the function instead. | A function can also declare optional arguments as shown below. Optional arguments can be omitted in a function call. If this is the case, the default expression provided in their definition is evaluated and passed as argument to the function instead. | ||
Line 236: | Line 250: | ||
AmbientTalk borrows its block syntax from languages like Smalltalk and Self, where the role of the curly braces is played by square brackets, i.e. '' | AmbientTalk borrows its block syntax from languages like Smalltalk and Self, where the role of the curly braces is played by square brackets, i.e. '' | ||
</ | </ | ||
+ | |||
+ | |||
===== Keywords ===== | ===== Keywords ===== | ||
Line 245: | Line 261: | ||
def i := 0; | def i := 0; | ||
def mapped[tbl.length] { | def mapped[tbl.length] { | ||
- | | + | i := i+1; |
+ | clo( tbl[ i ] ) | ||
}; | }; | ||
} | } | ||
Line 266: | Line 283: | ||
</ | </ | ||
- | However, it is impossible | + | It is also possible |
+ | |||
+ | < | ||
+ | foo: | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | Be careful when nesting calls to keyworded functions: | ||
+ | </ | ||
===== Native Data Types ===== | ===== Native Data Types ===== | ||
Line 413: | Line 438: | ||
===== Control Flow Constructs ===== | ===== Control Flow Constructs ===== | ||
- | Control flow constructs are defined in the lexical root of AmbientTalk. The lexical root is an object containing globally visible native methods (i.e. it is the top-level environment). We have already seen in the previous sections examples of use of the foreach and if/then structures. A list of traditional control flow structures defined in AmbientTalk is shown below: | + | Control flow constructs are defined in the "lexical root". The lexical root is an object containing globally visible native methods (i.e. it is the top-level environment). We have already seen in the previous sections examples of use of the foreach and '' |
< | < | ||
- | if: booleanCondition then: consequent | + | if: booleanCondition then: consequentClosure |
- | if: booleanCondition then: consequent | + | if: booleanCondition then: consequentClosure |
while: conditionClosure do: body | while: conditionClosure do: body | ||
foreach: iteratorClosure in: table | foreach: iteratorClosure in: table | ||
Line 424: | Line 449: | ||
<note warn> | <note warn> | ||
- | Note that '' | + | Note that '' |
</ | </ | ||
Line 457: | Line 482: | ||
table; | table; | ||
}; | }; | ||
- | quickSort(table, | + | quickSort(table, |
}; | }; | ||
>>< | >>< |
at/tutorial/basic.txt · Last modified: 2020/02/09 22:05 by elisag