Czy ktoś może podać przykład pokazujący dodanie dwóch tablic w Haskell?Dodawanie dwóch tablic wartości zmiennoprzecinkowych w Haskell
Jestem całkiem nowy dla Haskella i generalnie uważam, że mogę się szybciej uczyć, biorąc coś prostego, co rozumiem w jednym języku i widząc, jak inny programista może to zrobić w ich języku.
Byłoby wspaniale widzieć kod, który tworzy dwie tablice zmiennych i wywołuje funkcję, która skutkuje tablicą z sumowanymi wartościami. Coś równoznacznego z następującym kodem 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);
Zobaczenie kodu Haskella, który osiągnął ten sam rezultat, bardzo pomogłoby mi w zrozumieniu. Domyślam się, że wersja haskell utworzyłaby tablicę wyników i zwróciła ją, jak c = addTwoArrays (a, b, N)?
Dzięki.
Lub po prostu 'addTwoArrays = zipWith (+)'. – hammar
Masz rację, jednak myślałem, że dla nowego ucznia, lepiej byłoby pokazać normalną definicję funkcji niż curry. Ponieważ są to tematy w późniejszych rozdziałach :) –
patrz http://www.willamette.edu/~fruehr/haskell/evolution.html –