Referencias

Para algunas funciones puede ser necesario devolver más de un valor. Esto se puede lograr al devolver un vector de valores, pero muchas veces resulta conveniente pasar una referencia a una variable. Puede pasar una referencia a una variable a una función, y la función fijará el valor, eliminando una referencia. Aunque éste es el principal uso de las referencias, no es el único.

Cuando se utilizan funciones que devuelven valores a través de referencias en la lista de argumentos, pase solo el nombre de la variable con un ampersand (&). Por ejemplo, el siguiente código calcula el valor propio de una matriz A con un vector propio inicial indeterminado x, y guarda el vector propio obtenido en la variable v:

RayleighQuotientIteration (A,x,0.001,100,&v)

La manera como funcionan las referencias y la sintaxis que utilizan son similares al lenguaje C. El operador & hace referencia a una variable y * la elimina. Ambos pueden aplicarse sólo a un identificador, por lo que **a no es una expresión legal en GEL.

Las referencias se pueden explicar mejor utilizando un ejemplo:

a=1;
b=&a;
*b=2;

ahora a contiene el valor 2. También puede hacer referencia a funciones:

function f(x) = x+1;
t=&f;
*t(3)

devuelve el valor 4.