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 revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
at:tutorial:basic [2020/02/09 19:35] elisagat:tutorial:basic [2020/02/09 21:47] elisag
Line 85: Line 85:
 >>[2, 3, 4] >>[2, 3, 4]
 </code> </code>
 +
 +
 +
 +
 +
  
  
Line 102: Line 107:
 >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 111: Line 120:
 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]] >>[[1, 0, 0], [0, 1, 0], [0, 0, 1]]
->b[1][2] 
->>0 
->(b[1])[2] := 3; 
->>3 
->b 
->>[[1, 3, 0], [0, 1, 0], [0, 0, 1]] 
 </code> </code>
  
-Finally, we can create a function for nXn tables as follows: 
- 
-<code> 
-def makeMatrix(n) { def col[n] {0}; def m[n] { [@col]}}; 
-def c := makeMatrix(3); 
->>[[0, 0, 0], [0, 0, 0], [0, 0, 0]] 
->c[1] :=[1,2,3] 
->>[1, 2, 3] 
->>[[1, 2, 3], [0, 0, 0], [0, 0, 0]] 
-</code> 
-</code> 
  
  
Line 234: Line 226:
 >> 21 >> 21
 </code> </code>
 +
  
 ==== Optional Parameters ==== ==== Optional Parameters ====
Line 247: Line 240:
 </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 as follows: 
 + 
 +<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 b := makeMatrix(2,4, {|i,j| object: { def occupied := false }}); 
 +>((b[2])[4]).occupied := true 
 +>>true 
 +>(h[2]).each: {|e| system.print(" " + e.occupied)} 
 +>> false false false true 
 +>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>
  
 ===== Closures ===== ===== Closures =====
at/tutorial/basic.txt · Last modified: 2020/02/09 22:05 by elisag