¿Alguien puede dar un ejemplo que muestra la adición de dos matrices en Haskell, por favor?Agregar dos matrices de valores float en Haskell
Soy bastante nuevo en Haskell, y generalmente me parece que puedo aprender más rápido al tomar algo simple que entiendo en un idioma y ver cómo otro programador podría hacerlo en su idioma.
Sería genial ver un código que crea dos conjuntos de flotantes y llama a una función que da como resultado una matriz con los valores sumados. Algo equivalente al siguiente código de C.
void addTwoArrays(float *a, float *b, float *c, int len) {
int idx=0;
while (idx < len) {
c[idx] = a[idx] + b[idx];
}
}
int N = 4;
float *a = (float*)malloc(N * sizeof(float));
float *b = (float*)malloc(N * sizeof(float));
float *c = (float*)malloc(N * sizeof(float));
a[0]=0.0; a[1]=0.1; a[2]=0.2; a[3]=0.4;
b[0]=0.0; b[1]=0.1; b[2]=0.2; b[3]=0.4;
addTwoArrays(a,b,c,N);
Ver el código de Haskell que logró el mismo resultado me ayudaría a comprender mucho. Supongo que la versión de Haskell crearía la matriz de resultados y la devolvería, como c = addTwoArrays (a, b, N)?
Gracias.
O simplemente simplemente 'addTwoArrays = zipWith (+)'. – hammar
Tienes razón, sin embargo, pensé que para un nuevo alumno, sería mejor mostrar una definición de función normal que una curry. Dado que estos son los temas en los capítulos posteriores :) –
ver http://www.willamette.edu/~fruehr/haskell/evolution.html –