По мотивам
поста Никиты про разницу в производительности "высокоуровнего/функционального" и "низкоуровнего/императивного" кода. Взял буквально его пример с созданием массива пар чисел. Его оригинал на кложе:
(concat
(mapv
(fn [y] [from-x y])
(range from-y (quot to-y 2)))
(mapv
(fn [y] [to-x y])
(range (quot to-y 2) to-y)))
Как
(
Read more... )
Comments 18
Reply
Reply
Reply
Reply
Reply
Ну вы при этом будете как тот новый русский "один идиот едет по встречке? да тут их тысячи!". Реально всё может работать очень быстро и легко - см тот же Ocaml или Clean. Собственно, тот же Tonski упоминает Ocaml, который ну ничем не ближе к железу, чем тот же Х-ль. Просто разработчики Ocaml'а фанатично борятся за скорость.
Но сообщество Хаскелистов этим не заморачивается. Их реально устраивает то, что stack тратит чуть ли не секунду на старт. Что он при этом делает такого, что не делает dune или omake или ещё какая-то камловская система сборки, отрабатывающая за десятую долю этого времени, непонятно. И, очевидно, можно было бы ускорить stack, но всем насрать. Такая культура.
Reply
Reply
https://gist.github.com/thedeemon/0aa2ad85ff4f12098391981375c39f16
(один из вариантов, там закоментированы некоторые другие подходы)
Reply
Leave a comment