User Tools

Site Tools


at:tutorial:basic

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
at:tutorial:basic [2020/02/09 19:27]
elisag
at:tutorial:basic [2020/02/09 22:03]
elisag
Line 87: Line 87:
  
  
-==== 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 look to extensional and intensional definitions of multidimensional tables.  
  
-<code> 
  
 +
 +
 +
 +
 +
 +
 +
 +
 +==== 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.  Consider a multidimensional table which is extensionally defined as follows:
 +
 +<code>
 def a := [[1,0,0], [0,1,0], [0,0,1]]; def a := [[1,0,0], [0,1,0], [0,0,1]];
 >>[[1, 0, 0], [0, 1, 0], [0, 0, 1]] >>[[1, 0, 0], [0, 1, 0], [0, 0, 1]]
Line 99: Line 109:
 >a[1] >a[1]
 >>[1, 0, 0] >>[1, 0, 0]
 +>(a[1])[2] := 3;
 +>>3
 +>a
 +>>[[1, 3, 0], [0, 1, 0], [0, 0, 1]]
 </code> </code>
  
Line 107: 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};
 +>>[[1, 0, 0], [0, 1, 0], [0, 0, 1]]
 </code> </code>
 +
 +You can find later in this chapter a helper function for creating matrices  [[:at:tutorial:basic#optional_parameters|here]].
 +
 + 
  
 ===== Functions ===== ===== Functions =====
Line 211: Line 230:
 >> 21 >> 21
 </code> </code>
 +
 +
 +
 +
  
 ==== Optional Parameters ==== ==== Optional Parameters ====
Line 224: Line 247:
 </code> </code>
  
-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: 
 + 
 +<code> 
 +def makeMatrix(n, m := n, init := { |i,j| 0}){ 
 +  def [i,j] := [0,0]; 
 +  def makeCol(i,j) { 
 +     def col[m] { j := j + 1; init(i,j) } 
 +  }; 
 +  def matrix[n] { i := i + 1; makeCol(i,j)} 
 +}; 
 +>def c := makeMatrix(3); 
 +>>[[0, 0, 0], [0, 0, 0], [0, 0, 0]] 
 +>c[1] := [1,2,3] 
 +>>[1, 2, 3] 
 +>c 
 +>>[[1, 2, 3], [0, 0, 0], [0, 0, 0]] 
 +>def d := makeMatrix(4,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]] 
 +</code>
  
 ===== Closures ===== ===== Closures =====
at/tutorial/basic.txt · Last modified: 2020/02/09 22:05 by elisag