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/06 09:00] – * elisag | at:tutorial:basic [2007/04/06 15:17] – * elisag | ||
---|---|---|---|
Line 1: | Line 1: | ||
< | < | ||
- | **IN PROGRESS: FIRST DRAFT!!** | + | **This Tutorial is still under heavy construction!!** |
- | + | ||
- | - Add quasi-quoting? | + | |
</ | </ | ||
====== Functional and Imperative Programming ====== | ====== Functional and Imperative Programming ====== | ||
Line 28: | Line 26: | ||
>> | >> | ||
</ | </ | ||
- | Reference | + | |
+ | The variable name is used to refer a variable. | ||
+ | < | ||
+ | >x | ||
+ | >>7 | ||
+ | </ | ||
===== Tables ===== | ===== Tables ===== | ||
Line 54: | Line 57: | ||
</ | </ | ||
- | As shown in the definition of the varible //vocals//, evaluating a series of comma-separated | + | As shown in the definition of the varible //vowels//, evaluating a series of comma-separated |
< | < | ||
Line 63: | Line 66: | ||
==== Table Splicing ==== | ==== Table Splicing ==== | ||
- | TODO! | + | AmbientTalk provides the operator @ to splice tables into surrounding table expressions. |
+ | < | ||
+ | > | ||
+ | >>[1, 2, 3, 4] | ||
+ | >[1, @[2,[3]], [4], @[5], @[], 6] | ||
+ | >>[1, 2, [3], [4], 5, 6] | ||
+ | </ | ||
+ | |||
+ | The @ operator can be also used for matching table elements as shown below. | ||
+ | < | ||
+ | >def [first, @rest] := [1,2,3,4] | ||
+ | >>[1, 2, 3, 4] | ||
+ | >rest | ||
+ | >>[2, 3, 4] | ||
+ | </ | ||
===== Functions ===== | ===== Functions ===== | ||
Line 114: | Line 131: | ||
==== Variable-Length Argument Functions ==== | ==== Variable-Length Argument Functions ==== | ||
- | You can create functions that take an arbitrary | + | You can create functions that take an arbitrary number of arguments by means of the splicing operator **@** which splices the table containing the parameters into the argument list. |
< | < | ||
>def sum(@args){ { | >def sum(@args){ { | ||
Line 125: | Line 142: | ||
</ | </ | ||
- | When the //sum// function is called, the arguments are passed to the function | + | When the //sum// function is called, the //args// table is spliced and passed |
+ | |||
+ | Alternatively, | ||
< | < | ||
>def sum(a, b, @rest){ { | >def sum(a, b, @rest){ { | ||
Line 136: | Line 155: | ||
</ | </ | ||
- | In this example | + | In that case, the //sum// function |
+ | |||
+ | A function can also declare optional arguments as shown below. Optional arguments can be omitted in a function call. Internally, the default value provided in their definition is passed as the argument to the function. | ||
< | < | ||
>def incr( number, step := 1){ number + step} | >def incr( number, step := 1){ number + step} | ||
Line 195: | Line 216: | ||
===== Keywords ===== | ===== Keywords ===== | ||
- | |||
AmbientTalk supports keyword messages. We have already seen some examples of keyword messages in the previous sections such as the foreach structure. In AmbientTalk keywords are transformed by the parser into functions in the form: | AmbientTalk supports keyword messages. We have already seen some examples of keyword messages in the previous sections such as the foreach structure. In AmbientTalk keywords are transformed by the parser into functions in the form: | ||
Line 206: | Line 226: | ||
- | The basic types in AmbientTalk are numbers, fractions, text, tables and booleans. In fact, these data types are nothing but objects and as such, they respond to a variety of native methods. This section | + | The basic types in AmbientTalk are numbers, fractions, text, tables and booleans. In fact, these data types are nothing but objects and as such, they respond to a variety of native methods. Objects will be the subject of the next chapter of the tutorial. This section |
==== Numerical data types ==== | ==== Numerical data types ==== | ||
Line 298: | Line 318: | ||
</ | </ | ||
- | Tables also support some useful iterator methods | + | Tables also support some useful iterator methods as shown below. |
< | < | ||
>def sum:= 0; | >def sum:= 0; |
at/tutorial/basic.txt · Last modified: 2020/02/09 22:05 by elisag