Newbie questions about Pliant

Newbie questions about Pliant

initializing complex return types

how are complex return types initialized ?
Message posted by borisreitman on 2001/11/27 07:55:59
Which of the following, if any, is a correct way to program in pliant ?
Matrix is a "complex" type

=== 
function IdentityMatrix -> matrix
  arg Matrix matrix
  matrix resize 2 2 
  matrix 0 0 := 1
  matrix 0 1 := 0 
  matrix 1 0 := 0
  matrix 0 1 := 1

# and I will call it
gvar Matrix matrix := IdentityMatrix

OR: 

function IdentityMatrix -> matrix
  arg Link:Matrix matrix
  matrix := new Matrix
  matrix resize 2 2
  #etc

gvar Link:Matrix :> IdentityMatrix 
 




Message posted by maybe Hubert Tonneau on 2001/11/27 09:39:32
The first one is the right one, provided you are not using generic functions,
so you don't need a true object.

If you use generic functions on the returned value, then it must be a true
object, so first, you have to write:

function IdentityMatrix -> matrix
  arg Link:Matrix matrix
  matrix :> new Matrix # you want to set the pointer, not the value
  matrix resize 2 2

and second, you have to use it through:

gvar Link:Matrix matrix :> IdentityMatrix