
Alexey
17.03.2017
18:24:05
мы писали преобразование % рейтинга видео с порносайтов. и надо было получить от 0 до 5 звезд
так вот, формула на паскале получилась с 1го раза

Roman
17.03.2017
18:24:24

Alexey
17.03.2017
18:24:41
а у товарища на си только с третьего. все благодаря, что там типы приводились так, как он не смог догадаться

Google

Roman
17.03.2017
18:25:04

Alexey
17.03.2017
18:25:06
и когда он там железно все привел, то стало нечитаемо все. и на настоящую мат формулу уж совсем в край не похоже

Roman
17.03.2017
18:25:36

Alexey
17.03.2017
18:25:41
в из за слабой типизации си?
я повторно попытаюсь свою мысль. я за читаемость

Roman
17.03.2017
18:26:27

Alexey
17.03.2017
18:26:52

Roman
17.03.2017
18:27:04

shadowjack
17.03.2017
18:27:37
Штоб повысить читаемость заведите временныеременные переменные и их кастуйте или в функцию вынести части формулы.

Alexey
17.03.2017
18:28:03
я вот поэтому форт. заставляю себя. вроде так интересно. но не заходит, видимо, из за нечеловекочитаемости нескольких вещей. иначе человек - раб машины

Roman
17.03.2017
18:28:28
то ли дело функциональщина, там написал формулу и она у тебя почти как LaTeX написана)

Google

Alexey
17.03.2017
18:29:11
не зря может вирт свои обероны пишет. и систему, которую один человек способен воспринять целиком. что-то в этом есть.
но это другой остров, похоже

shadowjack
17.03.2017
18:29:25
Ну часто это наоборот сделает более читабельным. Ты же не можешь в коде многоэтажные формулы писать

Alexey
17.03.2017
18:30:19
тоже согласен. но я того. все детство - кружок программирования и паскаль на бумажке. а с чего начинал - оно и ближе ))) так что меня можно понять... и простить

shadowjack
17.03.2017
18:30:24
До абсурда доводить не надо, большинство языков преобразует типы "вверх" те int во float.
Просто нужно знать семантику оператора / в конкретном ящыке

Alexey
17.03.2017
18:31:08
да. паскаль и получается, что инт поделили на флоат - получился флоат. разрыв у меня получается от того, что си обратно к int приведет! вернее, может привести

Roman
17.03.2017
18:31:17
могу

shadowjack
17.03.2017
18:32:22
Это не многоэтажная формула. Я про дроби с корнями.

Alexey
17.03.2017
18:32:50
ну это уж точно никак

Roman
17.03.2017
18:32:53

shadowjack
17.03.2017
18:34:36
В erlang/elixir функции с одним именем но разной арностью это разные функции

Alexey
17.03.2017
18:34:50
так вот... возвращаясь к напечатанному. каррирование то ваше. как оно на читаемость?
я понимаю, что мне это дичь. а если рука набита, то как воспринимается?

shadowjack
17.03.2017
18:35:18
Оно хорошо. Если понимаешь семантику

Alexey
17.03.2017
18:36:38

shadowjack
17.03.2017
18:36:59
Но с помощью замыканий и анонимных функций тот же функционал реализуется

Alexey
17.03.2017
18:37:01
а эликсире они просто будут каждая как будто бы сама по себе do .. end и все
но при этом вроде проблема, если в генсе начнешь смешивать call и cast . в эликсир

Google

Alexey
17.03.2017
18:38:19
ну т.е. в ерланг они все будут через точку с запятой и ты их в перемешку не напишешь
а в эликсир они все - каждая вроде сама за себя, но перемешивать их нельзя
это уже к вопросу о том, зачем знать ерланг, если пишешь на эликсир

shadowjack
17.03.2017
18:39:24
Вообще нельзя определение функций перемешивать.
И об этом в книжке написано.

Alexey
17.03.2017
18:42:25
а почему нельзя - не написано? ))

shadowjack
17.03.2017
18:43:25
Автор компилятора поленился
А не, вру

Alexey
17.03.2017
18:43:51
ерланг
fnnn(1) -> "1";
fnnn(2) -> "2";
fnnn(_) -> hz.
fnnn(_,0) -> nan;
fnnn(A, B) -> A/B.
тут прям видно, что они разные. и даже не решить их смешивать
а когда в эликсире пишешь
def fnnn(1) do
"1"
end
def fnnn(a, b) do
a / b
end
def fnnn(2) do
"2"
end
и ругань. сиди и думай, почему )

Alexey
17.03.2017
18:45:48
из коду может быть не очевидно

shadowjack
17.03.2017
18:48:36
Кстати вы как пишите a + b*c или a + b * c?

Alexey
17.03.2017
19:05:36
догма ругается. пробелы ставим везде
и == и -> и математика вся эта - красивее с пробелами )
https://github.com/christopheradams/elixir_style_guide

shadowjack
17.03.2017
19:19:36
Да, и ^ или ** (возведение в степень) тоже.

Dmitry
17.03.2017
20:53:49
В элике можно в одну строку писать

Google

Dmitry
17.03.2017
20:53:51
Тоже
def foo(bar), do: bar

Alexey
17.03.2017
20:56:17
def foo(bar), do: bar
да я не об этом. а о том, что их смешивать нельзя.
но из ерланг синтаксиса - это прям практически сразу понятно.

Dmitry
17.03.2017
20:57:06
Что значит смешивать нельзя?

Alexey
17.03.2017
20:58:14
ерланг
fnnn(1) -> "1";
fnnn(2) -> "2";
fnnn(_) -> hz.
fnnn(_,0) -> nan;
fnnn(A, B) -> A/B.
эликсир взял и перемешал их. и не чухнул даже
def fnnn(1), do: "1"
def fnnn(a, b), do: a / b
def fnnn(2), do: "2"

Dmitry
17.03.2017
20:59:21
Я все ещё не понимаю в чем проблема
Если ты об арити?

Alexey
17.03.2017
20:59:48
да. я смешал порядок определения функций в эликсир
а так делать нельзя
сначала идет ф-я с 1 параметром, потом с 2-мя. потом опять с одним

Admin
ERROR: S client not available

Dmitry
17.03.2017
21:00:29
Ну хз

Alexey
17.03.2017
21:00:53
в ерланг синтаксе ты видишь, что все ф-ии с 1 параметром связаны между собой. они через точку с запятой написаны

Dmitry
17.03.2017
21:01:07
В эликсир есть магический \\ оператор, который из коробки фигачит две функции сразу

Alexey
17.03.2017
21:01:14
в конце точка. они как одна группа. с двумя параметрами - это как вторя группа функций
а в эликсире эти функции между собой не связаны.
да и заменой того, что я написал - он не является.

Dmitry
17.03.2017
21:02:33
Фишка в том, что если бы было так как ты говоришь, т.е. Функции были бы связаны - этот оператор не смог бы работать

Google

Alexey
17.03.2017
21:03:10
значит я не умею его готовить. мне постоянно вываливается какой-то еррор про неоднозначность определения

Dmitry
17.03.2017
21:04:18
Этот оператор конечно полная жопа если не разобраться
Например можно писать так
def foo(a \\ :a, b, c \\ :c)

Alexey
17.03.2017
21:05:02
ты так говоришь, как будто и без него вообще полная жопа )

Dmitry
17.03.2017
21:05:55
А вот \\ я иногда пользуюсь

Alexey
17.03.2017
21:06:22
не представляю, для чего такое может быть нужно. обычно есть какие-то входные данные. они. как правило, на первом месте стоят. для универсальности с pipe. а дальее у тебя, допустим, 3 параметра. и любой из них может быть задан. а может быть и не задан. и вот оно не работает с \\. когда поодряд пара параметров с \\

Dmitry
17.03.2017
21:07:18
Ща найду какой нибудь код)

Alexey
17.03.2017
21:07:37
ну то есть ты в принципе представь
функция с(a, b \\ :b, c \\ :c)
фактически, у тебя получается 4 варианта.

Dmitry
17.03.2017
21:08:36
Нет)
Фактически 3
Может поэтому у тебя ошибки вылетают?)

Alexey
17.03.2017
21:09:15
функция с арити 1, 2 и 3

Dmitry
17.03.2017
21:09:31
Точно

Alexey
17.03.2017
21:09:56
и с 3 - еще два варианта. когда b задано , а с не задано. и наоборот

Dmitry
17.03.2017
21:10:14

Alexey
17.03.2017
21:10:33
а. ну да. точно
короче, одна путаница с этим

Dmitry
17.03.2017
21:10:50
Короче всё просто
Вот из последнего
def new(id, following \\ false), do: %{"_id": id, following: following}
Создаю новых пользователей в базу