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 09:57] – elisag | at:tutorial:basic [2007/04/05 11:35] – elisag | ||
---|---|---|---|
Line 2: | Line 2: | ||
**UNDER CONSTRUCTION!!** | **UNDER CONSTRUCTION!!** | ||
</ | </ | ||
- | + | ====== Functional and Imperative Programming | |
- | ==== Functional and Imperative Programming ==== | + | |
This part of the tutorial shows AmbientTalk as a simple expression language with a minimum syntax which resembles very on Java script. This section mainly describes the basic features of the language, namely variables, functions and tables and control flow. | This part of the tutorial shows AmbientTalk as a simple expression language with a minimum syntax which resembles very on Java script. This section mainly describes the basic features of the language, namely variables, functions and tables and control flow. | ||
- | ==== Variables ==== | + | ===== Variables |
As usual, one can define, assign and refer to a variable. Variable definitions are made with the keyword **def**. Note that AmbientTalk is a dynamically typed language so, variables do not have a type but, they just contain values. | As usual, one can define, assign and refer to a variable. Variable definitions are made with the keyword **def**. Note that AmbientTalk is a dynamically typed language so, variables do not have a type but, they just contain values. | ||
Line 29: | Line 28: | ||
Reference is just done by evaluating the variable. | Reference is just done by evaluating the variable. | ||
- | ==== Tables ==== | + | ===== Tables |
- | As in Pico, indexed | + | Indexed |
< | < | ||
def t[ < | def t[ < | ||
Line 42: | Line 41: | ||
>>[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 53: | Line 52: | ||
</ | </ | ||
- | As shown in the definition of the varible | + | As shown in the definition of the varible |
< | < | ||
Line 60: | Line 59: | ||
</ | </ | ||
- | ==== Functions ==== | + | === Table Splicing === |
+ | |||
+ | TODO! | ||
+ | |||
+ | ===== Functions | ||
As variables and tables, functions are defined with the keyword **def** in the form of: | As variables and tables, functions are defined with the keyword **def** in the form of: | ||
Line 73: | Line 76: | ||
>>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. | ||
< | < | ||
>def counter := 0 | >def counter := 0 | ||
- | >> 0 | + | >>0 |
> def inc() { counter := counter + 1} | > def inc() { counter := counter + 1} | ||
>>< | >>< | ||
- | > inc() | + | >inc() |
>>1 | >>1 | ||
</ | </ | ||
Line 98: | Line 108: | ||
</ | </ | ||
- | Variables and functions defined locally to functions are only visible in the scope of the function where there were defined. | + | Variables and functions defined locally to functions are only visible in the scope of the function where there were defined. |
=== Variable-Length Argument Functions === | === Variable-Length Argument Functions === | ||
Line 113: | Line 123: | ||
</ | </ | ||
- | When the //sum// function is called, the arguments are passed to the function in a table called | + | When the //sum// function is called, the arguments are passed to the function in a table called |
< | < | ||
>def sum(a, b, @rest){ { | >def sum(a, b, @rest){ { | ||
Line 134: | Line 144: | ||
</ | </ | ||
- | ==== Closures and Blocks ==== | + | ===== Blocks |
The function name can also be used just to refer the function but without calling it. TODO! | The function name can also be used just to refer the function but without calling it. TODO! | ||
Line 150: | Line 160: | ||
>>3 | >>3 | ||
</ | </ | ||
- | |||
- | ==== Blocks ==== |
at/tutorial/basic.txt · Last modified: 2020/02/09 22:05 by elisag