at:tutorial:basic
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
at:tutorial:basic [2020/02/09 19:25] – adding elisag | at:tutorial:basic [2020/02/09 22:05] (current) – elisag | ||
---|---|---|---|
Line 86: | Line 86: | ||
</ | </ | ||
- | ==== Multidimensional tables ==== | ||
- | < | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Multidimensional Tables ==== | ||
+ | |||
+ | As mentioned before, there is no special constructor for definition of multidimensional tables, a table entry can contain another table. In what follows we have a closer look to manipulations with multidimensional tables. | ||
+ | |||
+ | < | ||
def a := [[1,0,0], [0,1,0], [0,0,1]]; | def a := [[1,0,0], [0,1,0], [0,0,1]]; | ||
>> | >> | ||
Line 96: | Line 109: | ||
>a[1] | >a[1] | ||
>>[1, 0, 0] | >>[1, 0, 0] | ||
+ | > | ||
+ | >>3 | ||
+ | >a | ||
+ | >> | ||
</ | </ | ||
Line 104: | Line 121: | ||
def aux[3] {0}; | def aux[3] {0}; | ||
def b[3] { i := i + 1; aux := [0,0,0]; aux[i] :=1; aux}; | def b[3] { i := i + 1; aux := [0,0,0]; aux[i] :=1; aux}; | ||
+ | >> | ||
</ | </ | ||
+ | |||
+ | You can find later in this chapter a helper function for creating matrices | ||
+ | |||
+ | |||
===== Functions ===== | ===== Functions ===== | ||
Line 208: | Line 230: | ||
>> 21 | >> 21 | ||
</ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
==== Optional Parameters ==== | ==== Optional Parameters ==== | ||
Line 221: | Line 248: | ||
</ | </ | ||
- | As is customary in languages with the above parameter passing semantics, AmbientTalk requires mandatory parameters to be defined //before// optional parameters, which should in turn be defined //before// a variable-argument parameter, if any. | + | As is customary in languages with the above optional arguments, AmbientTalk requires mandatory parameters to be defined //before// optional parameters, which should in turn be defined //before// a variable-argument parameter, if any. |
+ | |||
+ | Let us show how to use optional arguments to define an auxilary function that creates matrices: | ||
+ | |||
+ | < | ||
+ | def makeMatrix(n, | ||
+ | def [i,j] := [0,0]; | ||
+ | def makeCol(i, | ||
+ | def col[m] { j := j + 1; init(i,j) } | ||
+ | }; | ||
+ | def matrix[n] { i := i + 1; makeCol(i, | ||
+ | }; | ||
+ | >def c := makeMatrix(3); | ||
+ | >> | ||
+ | >c[1] := [1,2,3] | ||
+ | >>[1, 2, 3] | ||
+ | >c | ||
+ | >> | ||
+ | >def d := makeMatrix(4, | ||
+ | {|i,j| if: (i == j) then: {1} else: {0}}); | ||
+ | >> [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] | ||
+ | </ | ||
===== Closures ===== | ===== Closures ===== |
at/tutorial/basic.1581272723.txt.gz · Last modified: 2020/02/09 19:27 (external edit)