@proelixir

Страница 291 из 1045
Can
20.01.2017
04:17:32
Прост моя позиция по веществам - если тебе надо выискивать эффект то это тлен

Если эффект есть то он сам тебя выискивает

Константин
20.01.2017
04:18:09
http://zapomnivse.com/stati/polezno/preparati-dlya-pamyati-i-mozga.html

Can
20.01.2017
04:18:13
Вот во всех ноотропах и проч мне приходилось выискивать эффект

Google
Can
20.01.2017
04:18:35
Вообще лучше всего для прокачки мозгов помогает сессия

Две недели адской математики это как в зал сходить для мозга

После этого и запоминается и думается хорошо

Rustam
20.01.2017
04:36:52
Константин
20.01.2017
05:32:24
книга из будущего

2017-03-25

Taras ?
20.01.2017
05:32:48
?

Aldar
20.01.2017
05:35:42
Чтобы познать ФП нужно хаскель попробовать я считаю

Can
20.01.2017
05:43:57
Благодарю

Rafkat
20.01.2017
05:45:01
А Elm?

Rustam
20.01.2017
05:45:43
Мне последнее время не нравятся книги орейли из цикла Introducing Слишком обобщенная информация, толком ничего не понятно.

Can
20.01.2017
06:19:45
Я тут про Телеграм бэкап заливал кому то говорил сервис хороший получится

Google
Aldar
20.01.2017
06:23:17
https://altoros.wistia.com/medias/1aj7m8o1n6

anton
20.01.2017
07:32:49
пирацетам лучше в виде луцетама или ноотропила. Отечественный не прет. Ну или Фезам.
неожиданно :) уж неделя прошла кажется с момента обсуждения

Alexander
20.01.2017
07:34:38
Вот, что значит хорошая память!

anton
20.01.2017
07:35:30
память да, а моторика нет? может он там последовательно идет и читает сообщения. но медленно...

https://www.erlang-in-anger.com

Ivan
20.01.2017
08:33:53
@grach приветы)

Alex
20.01.2017
08:41:49
Есть какая то альтернатива acts_as_taggable под phoenix?

Viza
20.01.2017
11:25:08
# cycle def generate(user, count) do list = [] for i <- 1..count do {:ok, player} = Ecto.build_assoc(user.team, :players) |> Player.changeset(generate(user)) |> Repo.insert list = [list | player] end end # recursion def generate(user, count, counter \\ 0, list \\ []) do if counter < count do {:ok, player} = Ecto.build_assoc(user.team, :players) |> Player.changeset(generate(user)) |> Repo.insert generate(user, count, counter+1, [list | player] ) else list end end Надо создать указанное количество юзеров. Как лучше, через for или рекурсию? Мб чето исправить?

Artem
20.01.2017
11:32:28
в рекурсивном виде проще передавать счетчик через аргумент, и сделать отдельно функцию если counter 0, ну и list тоже через аргумент, в общем все через аргументы передавать нужно. аргумент каунтер не нужен, просто минусовать count при вызове следующем

Dmitry
20.01.2017
11:33:43
Проще использовать for для range

"У нас же функциональный язык, давайте везде сувать рекурсию!"

Viza
20.01.2017
11:34:56
тоже думаю что for тут лучше, не надо думать куда там рекурсия зашла

Artem
20.01.2017
11:35:28
да она все равно сведется к итерации при правильной готовке

Viza
20.01.2017
11:35:43
И еще, у for же внутри своя область видимости? почему тогда если в конце написать inspect(list) он все равно пустой, но при этом без list = [] оно не работает?

Dmitry
20.01.2017
11:38:00
У рекурсии есть 2 проблемы, которые работают не во всех, а в большинстве алгоритмов: -Рекурсия без кеширования работает хуже итерации. -Если в рекурсию надо делать TCO путём добавления агрегатора - прелесть рекурсии теряется. + High order function сделаны рекурсивно и их достаточно для того чтобы решить все ваши проблемы. Исключение - если функция не чистая ( типа скачивать по ходу работы новые данные )

Artem
20.01.2017
11:39:31
при рекурсивном виде у нас запись получается декларативная, при for императивная. ну и да, тут пройтись через map тоже краше выйдет(декларативная запись мне приятнее)

Viza
20.01.2017
11:41:10
def generate(user, 0, list), do: list def generate(user, count, list \\ []) do {:ok, player} = Ecto.build_assoc(user.team, :players) |> Player.changeset(generate(user)) |> Repo.insert generate(user, count-1, [list | player] ) end вот в целом поприятнее. без counter и if

сейчас с map попробую

Google
Dmitry
20.01.2017
11:42:33
В рекурсии "сперва сделать что-то, потом прибавить к аггрегатору, потом вызвать самого себя"

А в HOF - применить функцию изменения данных к каждой единице данных и все

Artem
20.01.2017
11:43:58
да, согласен про hof vs recursion не согласен про итерацию через for

Dmitry
20.01.2017
11:44:21
For - тот же map

Только ты не собираешь в список результаты

Viza
20.01.2017
11:49:07
def generate(user, count) do Enum.map 1..count, fn (i) -> Ecto.build_assoc(user.team, :players) |> Player.changeset(generate(user)) |> Repo.insert end end

думаю норм

Dmitry
20.01.2017
11:51:13
Я бы вынес результат map в repo.insert_all/3

И generate как то не может называться та и та функция

Viza
20.01.2017
11:54:58
Я бы вынес результат map в repo.insert_all/3
вроде с ним changeset не пашет

Там все равно не будет больше 3-5 вставок, в целом можно было бы с insert_all

Artem
20.01.2017
11:56:26
я просто на js перегрелся, перепутал с for i =0 ; i < len; i++

Artem
20.01.2017
11:56:37
а так да, такой фор отличный

Dmitry
20.01.2017
11:58:06
вроде с ним changeset не пашет
Действительно не пашет

Denis
20.01.2017
11:59:12
тигры elixir'a

почему феникс говно?

уже 3 раз здесь об этом упоминается

мап строит мап и хранит результат каждой итерации

def generate(user, count) do Enum.map 1..count, fn (i) -> Ecto.build_assoc(user.team, :players) |> Player.changeset(generate(user)) |> Repo.insert end end

это не чистый фор с C-like

Google
Denis
20.01.2017
12:05:59
Enum.each тут лучше подходит

Dmitry
20.01.2017
12:12:01
В эликсире for тоже есть

Nikita
20.01.2017
12:12:57
В эликсире for тоже есть
только енто ж компрехеншон

Viza
20.01.2017
12:13:10
не. each не подойдет, нужен потом этот список созданных записей

Aldar
20.01.2017
13:19:14
не. each не подойдет, нужен потом этот список созданных записей
То есть нужно вставить много игроков в команду?

Viza
20.01.2017
13:19:27
ну типо того

Aldar
20.01.2017
13:19:39
мб insert_all воспользоваться?

Admin
ERROR: S client not available

Viza
20.01.2017
13:19:53
он с ченжсетами не работает

Aldar
20.01.2017
13:20:23
да, то так получается вставка по одному через цикл, что не очень эффективно

Viza
20.01.2017
13:20:46
ну там не более 3-5 записей, а преждевременная оптимизация - зло

Aldar
20.01.2017
13:20:55
окей, тогда норм

Viza
20.01.2017
13:22:08
https://github.com/lubien/elixir-telegram-bot-boilerplate/blob/master/lib/app/commander.ex

когда очень любишь макросы

пример как не надо ими пользоваться)

вот еще https://github.com/lubien/elixir-telegram-bot-boilerplate/blob/master/lib/app/router.ex

в эликсире есть аналог рубишной *? Чтоб [first, second] передать в функцию как два аргумента

Andrey
20.01.2017
14:11:10
tuple, не?

Dmytro
20.01.2017
14:12:48
@Vizakenjack попробуйте пример показать, сложно понять что именно нужно

Google
Viza
20.01.2017
14:15:42
iex(3)> func = fn (a, b) -> a+b end #Function<12.52032458/2 in :erl_eval.expr/5> iex(4)> list = {1, 2} {1, 2} iex(5)> func.(list) ** (BadArityError) #Function<12.52032458/2 in :erl_eval.expr/5> with arity 2 called with 1 argument ({1, 2}) iex(5)> func = fn ({a, b}) -> a+b end #Function<6.52032458/1 in :erl_eval.expr/5> iex(6)> func.(list) 3 вот так работает да

Alexey
20.01.2017
15:05:31
@Vizakenjack iex(1)> func = fn (a, b) -> a + b end iex(2)> apply(func, [1, 2]) => 3

Viza
20.01.2017
15:22:38
да, отличный вариант. но я все-таки решил избавиться от такой передачи параметров

Can
20.01.2017
17:46:07
можно еще

fn({b,c}) - > b+c end d = {3,5} fn(d)

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

если нет то через апплай

Dmitry
20.01.2017
17:47:56
Не надо так делать

Потом не зарефакторишь, тесты же ты не пишешь?)

В идеале defstruct конечно

Can
20.01.2017
17:48:50
не ну бвают случаи когда надо передать аргументы которые пришли

далее

если обертки какие-нибудь пишешь

так то понятно что в обычных кейсах надо все аргументы по отдельности предавать

по обычному

Константин
21.01.2017
04:32:27
Считаю, что for был придуман для использования фильтров при итерации. Если результат итерации возвращать не нужно, тогда надо использовать each

Alexander
21.01.2017
07:10:16
все уже видели? https://github.com/koudelka/honeydew

прямо круто же

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

Can
21.01.2017
08:21:46
Красота

Страница 291 из 1045