LINUX.ORG.RU

>А на Haskell что нибудь ктоме подсчета факториалов пишут? Или это язык, специально заточенный для вычисления рекурсивных функций?

А что, тебе сложно факториалы без рекурсии посчитать? :)

suser
()

Подумывашь, на чём бы написать 1С:Предприятие?

Teak ★★★★★
()
Ответ на: комментарий от CrazyPit

> Хренасе тормозит. Делает питон вхлам. А на питоне ой как много пишут.

Кстати, хаскелловское комьюнити очень потрудилось, и теперь хаскелл вышел на первое место в Great Computer Language Shootout. (бенчмаркинг всех известных языков программирования).

anonymous
()
Ответ на: комментарий от human0id

>C зарулил!

Там всё непросто :) (если, конечно, что-то не поменяли). Если какая-то программа на языке элементарно не реализована у них в тестах, то язык за него получает 0 баллов, а конкурент - сколько он там набрал. Так что чистого бенчмарка не выходит. Для чистого сравнения нужно таким тестам приписывать нулевой весовой коэффициент. Вот тогда результаты совсем иные выходят :) Например, в лидеры выбивается обычно D.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Там фишка в другом. Хаскелловский код там очень сильно отличается от того, который используется в реальной жизни. Например, повсеметсно используются расширения гхц для подавления ленивости. Код выглядит жутко по уродски, можете сами глянуть. Зато по времени хаскелл (точнее, гхц) теперь действительно заруливает всех. Но это заслуга комьюнити, которое вылизывает код. В хаскелловском космьюнити много умных людей. Эт вам не анонимусы с ЛОРа.

anonymous
()
Ответ на: комментарий от anonymous

>Но это заслуга комьюнити, которое вылизывает код.

Дык, в том и приятная особенность этого бенча - что измеряет не скорость работы по определённому алгоритму, а решение задачи средствами, наиболее близкими данному языку.

Хотя, конечно, если код выглядит по-уродски - это серьёзный минус. И, увы, неизмеримый в цифрах... Ну да хоть число строк учитывать можно :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> Дык, в том и приятная особенность этого бенча - что измеряет не 
скорость работы по определённому алгоритму, а решение задачи средствами,
 наиболее близкими данному языку.

Ну, числа фибоначи на хаскеле естественно вычислять так (на шутауте 
заставляют использовать "наивный" рекурсивный алгоритм):

fib 0 = 0
fib 1 = 1
fib n = (fib $ n-1) + (fib $ n-2)

Хаселловцы замутили же такое:

fibr n = if n <## 2.0## then 1.0## else fibr (n -## 2.0##) +## (fibr (n-## 1.0##))

Поэтому, естественность, это не совсем удачный эпитет. Скорее, возможности трансляторов.

anonymous
()
Ответ на: комментарий от anonymous

>(на шутауте заставляют использовать "наивный" рекурсивный алгоритм):

Тогда - понятно. Жалко, лучше бы ориентировались на наиболее
оптимальные для языка решения... Хотя, опять же, вылез бы вопрос
"красивости" кода. Ибо на Си тогда безусловно сделали бы итеративный
алгоритм. А на Хаскелле меня радует:

fibz = 1 : 1 : [ x+y | (x,y) <- zip fibz (tail fibz)]
main = print (fibz !! 10000)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> Ибо на Си тогда безусловно сделали бы итеративный алгоритм.

Нет, я же говорил, по условию необходимо реализовать "наивный" алгоритм. Это бенч рекурсивных функций.

> А на Хаскелле меня радует:

Ага, самое интересное, что такой код даже эффективней стандартного итеративного алгоритма (O(ln n) против O(n). Источник: википедия, самому проверять влом. Может быть и неправда.).

anonymous
()
Ответ на: комментарий от KRoN73

> fibz = 1 : 1 : [ x+y | (x,y) <- zip fibz (tail fibz)]

fibz = 0:1:(zipWith (+) fibz (tail fibz))

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.