Думаю применить Haskell для решения одной задачки, но до сих пор меня беспокоит реализация в нем многих вещей с использованием рекурсии, тк неизвестно при обработке каких объемов данных полученная софтина выдаст segfault.
Мало того, меня очень удивляют следующие вещи - возьмем к примеру две функции:
getn 1 (h:t) = h
getn n (h:t) = getn (n - 1) t
getn1 1 l = head l
getn1 n l = getn1 (n-1) (tail l)
Так вот, getn 499000 [1..500000] выдает 499000, а getn1 499000 [1..500000] - Segmentation fault... Вопрос - ну почему???
Или косвенно рекурсивные функции проверки чет/нечет на ocaml - let rec pair n = (n<>1) && ((n=0) or (impair (n-1))) and impair n = (n<>0) && ((n=1) or (pair (n-1)));; - работают при любом n!..
Объясните дураку плиз.