LINUX.ORG.RU

Re: факториалы

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

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

suser ()

Re: факториалы

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

Teak ★★★★★ ()

Re: факториалы

На Haskell компиляторы пишут. Всё остальное шибко сильно тормозит.

anonymous ()
Ответ на: Re: факториалы от CrazyPit

Re: факториалы

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

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

anonymous ()
Ответ на: Re: факториалы от human0id

Re: факториалы

>C зарулил!

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

KRoN73 ★★★★★ ()
Ответ на: Re: факториалы от KRoN73

Re: факториалы

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

anonymous ()
Ответ на: Re: факториалы от anonymous

Re: факториалы

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

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

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

KRoN73 ★★★★★ ()
Ответ на: Re: факториалы от KRoN73

Re: факториалы

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

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

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 ()
Ответ на: Re: факториалы от anonymous

Re: факториалы

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

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

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

KRoN73 ★★★★★ ()
Ответ на: Re: факториалы от KRoN73

Re: факториалы

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

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

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

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

anonymous ()
Ответ на: Re: факториалы от KRoN73

Re: факториалы

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

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

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