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
at:tutorial:basic [2020/02/09 19:25]
elisag adding
at:tutorial:basic [2020/02/09 22:05] (current)
elisag
Line 86: Line 86:
 </code> </code>
  
-==== 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 96: 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 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};
 +>>[[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 208: Line 230:
 >> 21 >> 21
 </code> </code>
 +
 +
 +
 +
 +
  
 ==== Optional Parameters ==== ==== Optional Parameters ====
Line 221: Line 248:
 </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.1581272723.txt.gz · Last modified: 2020/02/09 19:27 (external edit)