@proelixir

Страница 436 из 1045
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
и когда он там железно все привел, то стало нечитаемо все. и на настоящую мат формулу уж совсем в край не похоже
нечитаемость это уже проблема сей, в том же F# явные типы не вызывают отторжения в математике.

Alexey
17.03.2017
18:25:41
в из за слабой типизации си?

я повторно попытаюсь свою мысль. я за читаемость

Roman
17.03.2017
18:26:27
в из за слабой типизации си?
ага. Он тебе неявно может один тип в одном месте привести к другому, а в другом толкьо явно.

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 приведет! вернее, может привести

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
В erlang/elixir функции с одним именем но разной арностью это разные функции
причем, в ерланг это видно лучше, потому что с одной арностью они будут через точку с запятой ))

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 задано , а с не задано. и наоборот

Alexey
17.03.2017
21:10:33
а. ну да. точно

короче, одна путаница с этим

Dmitry
17.03.2017
21:10:50
Короче всё просто

Вот из последнего def new(id, following \\ false), do: %{"_id": id, following: following}

Создаю новых пользователей в базу

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