
Roman
11.04.2017
19:52:56
причем
let c = a/b // 0.75<meters/times>

Ilnur
11.04.2017
19:53:28

Roman
11.04.2017
19:53:40
это не оверлоадинг

Dmitry
11.04.2017
19:55:56
Только что залез в код рабочего проекта на элике. Угадайте, сколько операторов я нашёл?
Угадайте, сколько переменных я нашёл? И угадайте, сколько тестов я нашёл )))

Google

Roman
11.04.2017
19:56:37

Dmitry
11.04.2017
19:57:22
Я просто к тому, что можно пилить простыню let, и там может быть типы что-то решают

Roman
11.04.2017
19:57:59

Dmitry
11.04.2017
19:58:04
Но если мне вдруг понадобиться, я могу использовать тюплы, определить пару методов

Roman
11.04.2017
19:58:32
И херачить туда все что угодно. Бассейны да трубы похуй

Alexander
11.04.2017
19:58:45
На самом деле если бы к машине эрланга да типы хаскеля, да еще макросы ракета
Вот был бы не язык а мечта.

Roman
11.04.2017
19:59:26
э… ок. F#?)
https://fsharpforfunandprofit.com/posts/units-of-measure/

Dmitry
11.04.2017
19:59:43
Никакого бы let it crash не было, хот релоада

Alexander
11.04.2017
20:00:09
Ну эликсир это машина эрланга с макросами лиспа

Dmitry
11.04.2017
20:00:27
Отп вообще бы не работало

Google

Alexander
11.04.2017
20:00:39
А вот что касается релоада, я не понимаю. Почему? Как типы мешают горячей перезагрузке?

Dmitry
11.04.2017
20:01:21
Сигнатура метода к примеру поменялась

Alexander
11.04.2017
20:01:36
Так и версия модуля уже другая. Добавить версию в тип

Dmitry
11.04.2017
20:01:46
В тип чего?

Alexander
11.04.2017
20:01:54
Есть тип модуля А, есть тип модуля B, и в модуле B есть метод code_change :: A -> B
модуля.

Dmitry
11.04.2017
20:01:57
Типы бывают у данных, в не у модулей

Alexander
11.04.2017
20:02:06
модуль — тоже данные
смотри
представь себе запись, record, у которой поля — функции или данные

Roman
11.04.2017
20:02:23

Alexander
11.04.2017
20:02:25
у каждой функции есть тип, у каждого поля данных есть тип
и у записи тоже есть тип, соот-но.
и это модуль. Чем не модуль?

Roman
11.04.2017
20:02:38

Alexander
11.04.2017
20:03:01

Dmitry
11.04.2017
20:03:01

Alexander
11.04.2017
20:03:22
ну так это же задача, а не проблема

Ilnur
11.04.2017
20:03:23

Alexander
11.04.2017
20:03:29
задача: запилить язык мечты

Google

Dmitry
11.04.2017
20:03:31
И у мэилбокса есть тип?
И он изменился в тот момент когда там были Пендинг данные?

Roman
11.04.2017
20:04:00

Alexander
11.04.2017
20:04:21
И у мэилбокса есть тип?
не обязательно. Т.е. это может быть catch-all тип, с конструктором на каждый вариант данных которые туда могут прийти
union type, кажется они так называются. Такой огромный жирный union type
кстати, мессенджер wire открыл кода немного, и он на хаскеле

Dmitry
11.04.2017
20:05:04

Roman
11.04.2017
20:05:14

Alexander
11.04.2017
20:05:20
не поминай go :)

Roman
11.04.2017
20:05:53

Alexander
11.04.2017
20:06:30
data Mailbox = Username String | Age Int

Alexander
11.04.2017
20:06:50
вот тебе простой юнион для мейлбокса, который принимает не всё, но больше чем один тип

Dmitry
11.04.2017
20:06:54
Киллерфича эрланга - ты можешь наговнякать код, работающий в идеальном случае, написать что делать когда упадёт, запустить и забыть

Alexander
11.04.2017
20:07:27

Dmitry
11.04.2017
20:07:47
И есть даже Варик запатчить прямо в продакшне

Roman
11.04.2017
20:08:18

Alexander
11.04.2017
20:08:22
я вот склоняюсь к тому, чтобы свою мелочь писать на эликсире с пурескриптом. Счастье с двух сторон: и типы круче чем у хаскеля (ну почти), и вечно-работающая машина с девятью девятками надёжности

Dmitry
11.04.2017
20:09:02
Если ты пишешь как Анатолий Вассерман тебе вообще типы не нужны, потому что ты не можешь передать то что не надо куда не надо

Alexander
11.04.2017
20:09:31
Вассерман может всё, не надо тут

Google

Dmitry
11.04.2017
20:09:32
В если ты человек, то как бы ты типы не описывал у тебя в конце концов упадёт

Alexander
11.04.2017
20:09:45
(кстати, глава про монады в purescript by example даёт лучшее понимание, из всего милльона туториалов которыми засран весь интернет)

Roman
11.04.2017
20:09:45

Dmitry
11.04.2017
20:10:21
И вопрос в том НУЖНО ли тратить время на это, если у тебя будет работать 99% времени а не 95%

Alexander
11.04.2017
20:10:38
99.9999999%

Dmitry
11.04.2017
20:10:59
С учётом того что супервизору пофиг, как часто у тебя падает - раз пол секунды или раз в пол года

Alexander
11.04.2017
20:11:38
BEAM — VM мечты.
Если надо чтоб работало вечно — надо писать для неё.
Если надо, чтобы работало корректно — то на хаскеле.

Dmitry
11.04.2017
20:12:07
И это решает огромный круг бизнес задач, связанных в основном с IO, которые в хаскеле превращаются в олимпиаду по математике

Alexander
11.04.2017
20:12:49
ну… это же не может быть каким-то аргументом против хаскеля? олимпиада, это разве плохо?

Admin
ERROR: S client not available

Kelin
11.04.2017
20:12:53
Я оценил)

Alexander
11.04.2017
20:13:07
и нет, IO в хаскеле не сложно. Непривычно, но просто.

Dmitry
11.04.2017
20:13:42
Самое простое ИО "я хочу получить это, если не получил - падаем"

Alexander
11.04.2017
20:14:14
ну это понятный шаблон программирования, идеальный для beam. В хаскеле ты захочешь другого

Dmitry
11.04.2017
20:14:51
Если падаем все время и задолбало, добавляем строчку "если получил не то, а это - делаем так, иначе падаем"
И так до полного удовлетворения

Alexander
11.04.2017
20:15:05
в хаскеле ты захочешь связать серию функций типа a -> m b в длинную цепочку a -> m c, и будешь это использовать вместо обработки ошибок, к которой привык в других языках
это вопрос привычек, которые диктуются языком

Dmitry
11.04.2017
20:15:22
На выходе получаем минимальное время и максимальное бабло

Google

Alexander
11.04.2017
20:15:37
ну… честно говоря
за бабло я вообще перлом занимаюсь
так что…

Dmitry
11.04.2017
20:16:52

Alexander
11.04.2017
20:18:17
Если для языка требуется программист с высшим математическим образованием, это не делает язык непригодным для промышленного использования
И я не понимаю агрессию

Roman
11.04.2017
20:20:11
Это бугурт ниасилевшего

Dmitry
11.04.2017
20:20:54
Можно ли делать толчки из золота? Без сомнения. Я слышал в доме владельца Фейсбука есть такой

Roman
11.04.2017
20:21:53
да куча проектов иначе бы про язык ты бы даже и не услышал. А про крупные работющие приложения на elixir я так и не услшыл.

Dmitry
11.04.2017
20:21:54
Если для материала требуется не сантехник а ювелир, делает ли это материал непригодным для промышленного использования?

Roman
11.04.2017
20:22:29

Alexander
11.04.2017
20:23:24
Агрессия, как будто я в метро в час пик

Roman
11.04.2017
20:24:03
let printerAgent = MailboxProcessor.Start(fun inbox->
// the message processing function
let rec messageLoop() = async{
// read a message
let! msg = inbox.Receive()
// process a message
printfn "message is: %A" msg
// loop to top
return! messageLoop()
}
// start the loop
messageLoop()
)
не туказаний типов, но если бует ошибка ты узнаешь о ней даже без написания тестов

Alexander
11.04.2017
20:24:06
Есть два приятных к использованию подхода, эликсир является представителем одного, второй не хуже а другой

Ilnur
11.04.2017
20:26:27

Dmitry
11.04.2017
20:26:36

anton
12.04.2017
00:01:30

Roman
12.04.2017
00:02:02

Alexander
12.04.2017
00:36:38
что-то странные новости из авиасала, то там всех увольняют к черту, то рабов ищут за 2к usd