Fork me on GitHub
#clojure-russia
<
2016-07-24
>
andmed08:07:58

едет кто на clojutre в финку в сентябре?

andmed08:07:38

посмотрю как по деньгам, плюс визу получать.. но на один день всего, в принципе удобно, из питера вообще сказка наверное

niquola08:07:27

Я поеду

niquola08:07:43

3 часа до Хельсинки

andmed08:07:03

поездом, с пересадкой в Лахти?

andmed08:07:54

а. до хельсинки. тоже пересадка. поездом?

niquola08:07:26

Скоростная Ласточка

andmed08:07:57

на http://shop.vr.fi вроде прямые есть за 80 евро. 5 часов до тампере

andmed08:07:06

эх, дневные только. я б предпочел ночной. так еще там ночевать придется..

niquola09:07:26

Из Мск Лев Толстой ходит по ночам ;)

andmed09:07:01

вау. круто. можно быть там за 100 евров через ночь и всего с часовым опозданием к началу. обратно сложнее... написал им, знают чего по визе, вообще интересно, я бы с радостью прокатился

andmed09:07:14

+60 за визу и еще тридцатник туда же. бюрократы уху ели конечно

kronos_vano10:07:06

а почем там билет я так и не нашел

andmed10:07:33

билет 4000 до хельсинки и там 10 евров. а виза еще и страховка нужна блин

kronos_vano10:07:17

я про пати

kronos_vano10:07:31

у меня виза заканчивается 9го

andmed10:07:46

там бесплатно. не америка чай))

andmed10:07:00

но в штатах бюрократии меньше, да

andmed10:07:05

tonsky доклад делает

misha12:07:58

@andmed: а ты на билеты на конференцию успел?

andmed12:07:07

Да, зрителем легко. Я не с докладом

artemyarulin12:07:47

а в кложуре нет какой магии дистрактинга чтоб получить первый, последний элемент и все что посередине вместе? Т.е. хотелось бы (let [start & rest end] (range 5)] получить start=0, rest = 1 2 3, end=4

misha13:07:13

зажрался kappa

comerc13:07:10

вы канешна извините, но Spacemacs после Atom - это перебор. хорошо, что @tonsky показал LightTable в деле 🙂

artemyarulin13:07:08

а чо перебор? настраивать надо и не нравиться набирать M-x batterfly все время?:)

comerc13:07:40

@artemyarulin: срочно нужно макрос написать

misha13:07:55

медленно:

(let [[f & r] (range 5)
      [L & _] (reverse r)]
  [f L])
[0 4]

misha13:07:31

ну или last

artemyarulin13:07:45

да написать то не сложно, просто подумалось может чо уже есть - по мне дак частая задача - взять по краям и все что осталось посередине

misha13:07:48

если частая - что-то у тебя с архитектурой так себе, оно же медленно и со списками, и с векторами будет

artemyarulin13:07:48

да неа, парсю аргументы для консольного приложения просто

misha13:07:21

а чем последний особеннее центральных?

misha13:07:09

короче, "звучит странно"

artemyarulin13:07:07

begin argument1:=1 argument2:=2 argument3:=3 end делфи парсю 😛

misha13:07:39

не жлобись на лишнюю строку в let'e kappa

artemyarulin13:07:02

винт не резиновый!

artemyarulin13:07:07

чтоб как-то восстановится в глазах других после флейма, вот интересное чтиво про перформанс clojure.spec от Самого https://twitter.com/RobStuttaford/status/756763110720102400

misha13:07:59

чот очевидный ответ, нет?

misha13:07:02

"тысячи тестов медленнее десятков" и "спека еще андер констракшн, чо за предъявы?"

artemyarulin13:07:45

ну для меня (как еще не писавшем на спеке много) было сюрпризом что прогон тестов может возрасти в 10-100 раз по времени. Точнее счас то я конечно все это понимаю, но вот раньше не задумывался

misha13:07:26

зажрался kappa

artemyarulin13:07:39

да ну тя 🙂

comerc13:07:16

(let [[& r] (range 5)
      [l] (last r)]
  [r l])

comerc13:07:55

nth not supported on this type: Long

comerc14:07:00

почему?

kronos_vano14:07:13

а как ты его используешь

comerc14:07:40

в (last r) передается первое значение последовательности, а не сама последовательность (видимо)

comerc14:07:49

@misha: покажи работающий пример с применением last, пажаласта

misha14:07:58

(let [[f & r] (range 5), L (last r)] [f L])

misha14:07:19

вектор вокруг l убери

comerc14:07:04

@misha:

(let [[f & r] (range 5)
      L (last r)] [f r L]) [0 (1 2 3 4) 4]
а как теперь убрать последнее значение в r?

rmuslimov14:07:49

[f (butlast r) L]

rmuslimov14:07:56

так как то

comerc15:07:31

(let [[f & r] (range 7)
      L (last r)] 
  [f (butlast r) L])
@artemyarulin - готово! 🙂

razum2um15:07:59

@comerc: first + subvec + last с vec будет ок. со списком хоть как будет пробег

razum2um15:07:08

а нет, last и по вектору бегает..

razum2um15:07:01

наверное самое оптимальное будет first + subvec + nth по длине

razum2um15:07:15

хоть и не разу некрасиво 😕

comerc15:07:29

@razum2um: еще есть ленивый вариант drop-last, но пробег из-за last - я правильно понимаю?

rmuslimov15:07:48

а сплит сделать не быстрее на len - 1?

razum2um15:07:23

все кроме subvec родит еще один список для середины емнип

rmuslimov15:07:38

так ну структуры же у нас дешево порождать друг от друга в clojure. То есть например есть длинный длинный вектор, создать еще один вектор без последнего элемента - это по затратам не зависит от его длины, верно?

razum2um15:07:21

эм. поправьте, если ошибаюсь, но "дешево порождать друг от друга” не всегда. конкретно butlast - энергично сделает копию, а drop-last - лениво, но тоже копию. но строго говоря это не глубокая копия и реально больно будет если это очень большой список примитивов + именно butlast

rmuslimov15:07:55

butlast делает энергичную копию да, интересно

rmuslimov15:07:56

subvec - This operation is O(1) and very fast, as the resulting vector shares structure with the original and no trimming is done.

rmuslimov15:07:06

победитель в этом зачете

razum2um15:07:47

а вот чего я не ожидал, что last бегает по вектору когда могло быть (nth vec (dec (count vec))) хотя и это для не пустого

rmuslimov15:07:15

last рассчитан на sequence

rmuslimov15:07:17

last is a sequence operation, not a collection operation

razum2um15:07:05

все уже обсуждено до нас 🙂 хотя мне довод puzzler нравится

razum2um15:07:55

т.е. count же сделан для вектора нормально