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 10:02] – elisag | at:tutorial:basic [2007/04/06 08:08] – * 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 30: | Line 31: | ||
===== Tables ===== | ===== Tables ===== | ||
- | As in Pico, indexed | + | Indexed |
< | < | ||
def t[ < | def t[ < | ||
Line 41: | Line 42: | ||
>>[1, 2, 3, 4, 5] | >>[1, 2, 3, 4, 5] | ||
</ | </ | ||
- | Although there is no special constructor for definition of multidimensional tables, a table entry can contain another table. This is internally stored as a unidimensional table whose entries are other tables. | ||
+ | Although there is no special constructor for definition of multidimensional tables, a table entry can contain another table. This is internally stored as a unidimensional table whose entries are other tables. | ||
< | < | ||
>def vocals := [" | >def vocals := [" | ||
Line 52: | Line 53: | ||
</ | </ | ||
- | As shown in the definition of the varible | + | As shown in the definition of the varible |
< | < | ||
Line 76: | Line 77: | ||
>>25 | >>25 | ||
</ | </ | ||
- | This example also illustrates how functions are called. Calls to functions without parameters must also include the parenthesis. | + | This example also illustrates how functions are called. Calls to functions without parameters must also include the parenthesis |
+ | < | ||
+ | >def f(){nil} | ||
+ | >>< | ||
+ | >f() | ||
+ | >> | ||
+ | </ | ||
+ | The return value of a function is the result of the last statement executed. Functions must always return a value - i.e. they cannot be abstract. The example also illustrates how to create dumb function that doesn' | ||
Functions have access to the enclosing environment of its definition as shown in the following example. | Functions have access to the enclosing environment of its definition as shown in the following example. | ||
Line 101: | Line 109: | ||
</ | </ | ||
- | Variables and functions defined locally to functions are only visible in the scope of the function where there were defined. | + | This example also illustrates how a function can be made private by means of lexical scope. |
=== Variable-Length Argument Functions === | === Variable-Length Argument Functions === | ||
Line 136: | Line 144: | ||
>>6 | >>6 | ||
</ | </ | ||
+ | |||
+ | ===== Closures ===== | ||
+ | |||
+ | As you have probably noticed in the previous examples, | ||
+ | |||
+ | The function name can be thus used to refer the function (without calling it). This will also return a closure to that function. | ||
+ | |||
===== Blocks ===== | ===== Blocks ===== | ||
- | The function name can also be used just to refer the function but without calling it. TODO! | + | In AmbientTalk, |
+ | < | ||
+ | { |< | ||
+ | </ | ||
+ | If the block do not require any parameter, the |< | ||
+ | < | ||
+ | >{| a, b| a+ b} (3,2) | ||
+ | >>5 | ||
+ | </ | ||
+ | Note that the argument list passed to the block can define | ||
+ | < | ||
+ | >{|a, b, @rest| | ||
+ | def total := a + b; | ||
+ | | ||
+ | | ||
+ | >>6 | ||
+ | </ | ||
- | Unlike Pico, AmbientTalk doesn' | + | This example also illustrates |
+ | 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: | ||
< | < | ||
- | > | + | > |
- | >>0 | + | >>< |
- | >sum := sum + 1 | + | >square(1,2) |
- | >>1 | + | |
- | > | + | |
- | >>nil | + | |
- | >sum(1,2) | + | |
>>3 | >>3 | ||
</ | </ | ||
- |
at/tutorial/basic.txt · Last modified: 2020/02/09 22:05 by elisag