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 21:35]
elisag
at:tutorial:basic [2020/02/09 22:05] (current)
elisag
Line 95: Line 95:
  
  
-==== 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.  Consider a multidimensional table which is extensionally defined as follows: 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:
Line 121: Line 124:
 </code> </code>
  
-Finally, we can define a helper function to create matrices as follows: +You can find later in this chapter a helper function for creating matrices  [[:at:tutorial:basic#optional_parameters|here]].
- +
-<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(n,m) } +
-  }; +
-  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]] +
-</code>+
  
 + 
  
 ===== Functions ===== ===== Functions =====
Line 242: Line 230:
 >> 21 >> 21
 </code> </code>
 +
 +
 +
 +
 +
  
 ==== Optional Parameters ==== ==== Optional Parameters ====
Line 255: 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.1581280529.txt.gz · Last modified: 2020/02/09 21:39 (external edit)