Rayslava
26.06.2012 04:01 42152046441340682402130095
(defn my-add [a b]
(+ a b))
(def my-add2
(fn [a b]
(+ a b)))
(time (my-add 3 45))
(time (my-add2 3 45)
Output:
"Elapsed time: 0.707715 msecs"
"Elapsed time: 0.212513 msecs"
--
Ну и какого хера?
ХЗ, это не я
Прогрев мотора же.
Думаю, что это время раскрытия макроса. Но почему так долго?
Ну время на дрыганье винтом же.
Ок. Так и запишем.
Кстати, гет! :)
Один ssh пжлста
С мятой.
макросы на винте? нет пути
Ну, а если на большом объеме данных? Или, хотя бы, местами поменять?
Это у меня одного консоль clojure — ссаное говно? Ни стрелочки, ни емакс-клавиши не работают. Есть альтернатива получше?
lighttable
теперь я понимаю, почему его так люто спонсировали.
а вообще надо к емаксу поискать чего там есть
потому что не понимают, что код это не главное
натупил, там же ниже есть костыли для Enhancing Clojure REPL with rlwrap http://en.wikibooks.org/wiki/Clojure_Pro...
ща пробую
как-то так
(time (map (fn [x] (my-add 22 x)) (range 1 10000)))
"Elapsed time: 0.202623 msecs"
(time (map (fn [x] (my-add2 22 x)) (range 1 10000)))
"Elapsed time: 0.204484 msecs"
чтоб не срать в output можно еще
(time (reduce (fn [a b] a) (map (fn [x] (my-add 22 x)) (range 1 10000000))))
ох, весело у вас тут, пацаны
ВКУСНЫЙ ЛИСП
ЛИШП*
Ты так говоришь, как будто это что-то плохое.
наоборот будет годно, если кложар разовьётся в своём коммунити хоть насколько-то, но в итоге какое-то говноедство выйдет, инфа 100%
Ну, насчёт кложи я с тобой, в принципе, согласен. Лисп, который не умеет в рекурсию — нонсенс.
што? почему не умеет?
Ну, они говорят, что не умеет из-за жаба-машины.
Но я подозреваю саботаж.
В смысле, если тебя пугает, что совсем не умеет — нет, это не так. Просто он не умеет автоматически разворачивать хвостовую рекурсию. Чтобы развернуть стек в итерацию, приходится применять специальный оператор recur.
ну я о ней же. просто на хабре была статья как раз с жалобами о том, что "внезапно перестала хвостовая рекурсия в кложуре", а потом оказалось "а, это потому что в try/except её завернули". потому я сделал вывод, что она есть. а вообще, это проверить несложно.
щас пойду попробую (просто я впервые в жизни её вообще запустил в этом топике)
user=> (def foo (fn [x] (if (> x 100000000000000000000000000000000) x (foo (+ x 1)))))
#'user/foo
user=> (foo 1)
StackOverflowError user/foo (NO_SOURCE_FILE:8)
похоже, таки нету этой вашей оптимизации
Бля. Именно об этом я и писал. *Оптимизации* нет. Для неё запусти recur
ну я о ней и писал, что вроде бы была. как видишь, ошибался.
ааа, это про F# было http://habrahabr.ru/post/143690/
аа, ну еще мне показалось, что ты написал не "говорят, не умеет". типа не документация, а люди :) короче ок, сдаюсь.