
Vasily
07.04.2018
15:02:45
В кложе вашей богомерзкой
Мне и так по работе приходится чередовать чтение с++ кода и java

Roman
07.04.2018
15:03:56

Igor
07.04.2018
15:07:56

Google

Evgeniy
07.04.2018
15:09:28
Кажется, остальные видео с F# eXchange будут только в понедельник. :(

Vasily
07.04.2018
15:09:33
Коллеги, помогите понять, где я туплю

Igor
07.04.2018
15:09:54

Evgeniy
07.04.2018
15:09:59
Нет.

Roman
07.04.2018
15:11:43

Vasily
07.04.2018
15:12:32
Дома?)
Туплю я дома, да, но имелось в виду место в коде

Friedrich
07.04.2018
15:12:52

Vasily
07.04.2018
15:13:33

Friedrich
07.04.2018
15:14:13
Поясни
Ну вот member this.Bind(m,f) — тут же можно всё аннотировать?

Vasily
07.04.2018
15:14:28
Возможно, ща глянем

Friedrich
07.04.2018
15:14:38
Кажись, он у тебя думает, что ReadResult<int64> — монада или типа того
(я тоже под вечер туплю, если что не бейте)

Evgeniy
07.04.2018
15:16:04
Я бы для понимания сначала писал явно через функции bind и return.

Google

Vasily
07.04.2018
15:17:28
Делаю по аналогии с https://fsharpforfunandprofit.com/posts/computation-expressions-wrapper-types/
Влашин редиска
Теперь понятно, почему у него работает
let getCustomerId name =
if (name = "")
then Error "getCustomerId failed"
else Success "Cust42"
let getLastOrderForCustomer custId =
if (custId = "")
then Error "getLastOrderForCustomer failed"
else Success "Order123"
let getLastProductForOrder orderId =
if (orderId = "")
then Error "getLastProductForOrder failed"
else Success "Product456"
У него везде строка в резалте
В общем, пример бесполезен, походу

Pavel
07.04.2018
15:43:12
У него везде строка в резалте
member this.Bind(m,f)=
match m with
|ReadResult.Error e->printfn "read error"
ReadResult.Error e
|ReadResult.Ok r->f r

Vasily
07.04.2018
15:46:41
Почему-то на тип Inner ругается теперь

Pavel
07.04.2018
15:48:03
Не помогает
https://sharplab.io/#v2:DYLgZgzgPgLgngBwKYAIBKSCGATDECuwMAPAOQwB8AvHoSeQDQQwBOAlgHYDmFAsAFDAkMFCyzYAzACZRVdONpEAdAHkA1imkChIsTgBsAFlEoaCpAWXqURgDICH/eMnk4kLAEL42wbO4AUAJRUAigAtkhhAEbuKDAAFmwQSh6c2P5hDGDBKKHhmDAAxvHhKADubAm5/CgoUBg4ijBKAKIsLAD2LChIALQUCOwcMGAcKABEetg97V3jebWLS8srrrgWdK2z3Uh59eaWzdYs/WCioRHRsQlJShgw+Cwc/gAewQ3rh6oaL44CzqgAJIcDjuKgAbwAwiBODBpABff6IVAAFQhAEEYcNpABuDxYmBGHHA0EsEAk9yI/jaYQoKLeXxgj7uLw+PwsIJ/ak1AQAbWILWGLDgAAUOrCKABdGkiMKYTgoTAsLgAN1M1SWOlEFio9LZ7nBC1WtR0AEJFVQpkYUAAGI3Gs10y3iaS2+2rR1sXUM9mGmrGgOLR2FZ04V12/2BgNiB5PWpQqiFKlRwPJqMxx5jcHo3V4qiYYkgsFsNPG0soQaw0YTACk6PG2ogRptQA==

Vasily
07.04.2018
15:48:37
Хммм
Где-то я накосячил, значит
@deexpp респект

Evgeniy
07.04.2018
15:54:21

Vasily
07.04.2018
16:01:39
Осталось понять, где косяк в коде:https://sharplab.io/#v2:DYLgZgzgPg9gDgUwHYAIDKBPCAXBBbAWACgB6ElAGQQEMAnVPGWhFagIxgFdsUAxAYlY8AFtmxwQZSMLpwAdEwDmxMugQtswlgHIBKACrcmAS2rBtKOLRgArBAGMeYJikbMUW4POLYMiFABKNAAmQRCcwNgAPNrUAHwAvGER0bEANDi0xkiKccTACDzM1MEAzABMKAmBIcmRcgDyANYoFfmFKMXBAGwALChVQSV12I0tfRTEPn4sAJJISAi0CQDeAMIg2dgVAL7T/vqrAIKbSNvlANwAQqfYfRfzi7Qgj0t7RPssQ8FLV5zGwB+tAAFABKBLEVz4NhLFCaYwQORXbLBGLxYF4EDfEZouJpMDglCQ1zUbD2YSuFAAd2MmiJRAGUGxCHC9QAorRrLQUAgALRxKxbMCoABEXR5nKYIuJA1lcvlCpqwxZKTkHK5POJTNqKvqzU6/LAnUheGhsPhiKC2E49GBAA9wfq7VMiAUeGx/oClkkQr9PUCwZDiABtKJss60DAABRgWziAF12jw8NRsqxaIoAG5Velyt2dFkJD0AoErGWKhVugCErASXT65YrecKNbYdZCbQZTcrLZQxiL/qWZa73dHA2rKHs7ZKnbHc+Y1voKHWCXs7zn3Z2A0bo4XNtQy6OReuCWoDwW3uM66bW/LgrOwpQIoApEcRQWIOWAAwoVR7pfUKgWwIIosIIHatKTjAPxAA
@deexpp , какую магию я там не понимаю?
Все, нашел косяк
В бинде не надо было параметры типа выставлять

Pavel
07.04.2018
16:36:40
а то вывод типов клинит

Google

Vasily
07.04.2018
16:38:56
А, спасибо, буду знать

Evgeniy
07.04.2018
19:48:58
https://github.com/moodmosaic/doctest

Alex
07.04.2018
20:52:13
А почему перегрузка методов - плохо?
есть у меня например методы для запроса пользователя из базы:
module User =
let findById (Id: Id) =
...
let findByLogin (Login: Login) =
...
мне такой нейминг например не очень нравится - выходит User.findByLogin login, возможно было бы лучше назвать оба просто find - а какой из двух вызывается и так видно из параметра, но увы (?) так нельзя

??
07.04.2018
21:57:30

Alex
07.04.2018
21:58:53
Те кто Id \ Login могут назвать как "x" с тем же успехом могут и метод назвать в том же духе :D

??
07.04.2018
21:59:37

Alex
07.04.2018
22:01:34
Такое именование встречаю в основном в каких либо прмерах

??
07.04.2018
22:06:39
Такое именование встречаю в основном в каких либо прмерах
let mk_tuple g m es = mkRefTupled g m es (List.map (tyOfExpr g) es)
https://github.com/fsharp/fsharp/blob/master/src/fsharp/QuotationTranslator.fs То есть тут будет тяжко выписывать имена переменных, чтобы показать какой метод перегрузки мог бы быть tyOfExpr g против ty g
В конце материалов к докладу: «Please, use good variable names.
Please, use good method names and seek good stack traces»

Evgeniy
08.04.2018
06:57:16
Нужно только помнить о том, как вывод типов в этом случае работает. И стандартными гайдлайнами из C# пользоваться.


Friedrich
08.04.2018
07:01:19

??
08.04.2018
07:01:53

Vlad
08.04.2018
07:06:39

Evgeniy
08.04.2018
07:06:42
https://twitter.com/lefthandedgoat/status/982786312653627392
Легаси!
Ну, у Сайма особый бекграунд, поэтому и код компилятора по современным стандартам не очень хороший.

Vlad
08.04.2018
07:08:01

Evgeniy
08.04.2018
07:08:19
Да. :)
Там сначала нужно доку почитать, а потом код.

Vlad
08.04.2018
07:09:08
Что касается имён переменных то вот мнение
http://blog.ploeh.dk/2015/08/17/when-x-y-and-z-are-great-variable-names/

Google

Vlad
08.04.2018
07:09:43
Правда, не все увиденное этим можно оправдать :)

Evgeniy
08.04.2018
07:55:39
https://twitter.com/nikofeyn/status/982729830767751169
Я вчера немного поработал с питоном, мне не понравилось. :(

Igor
08.04.2018
08:23:16
https://i.gyazo.com/fff84df56ee18d2f1d1823004ee7fc8a.png
Смотрю такой доклад про кложуру, а тут опа и Марка Seemann вспоминают

??
08.04.2018
08:23:30
Я вчера немного поработал с питоном, мне не понравилось. :(
Не представляю как его сейчас используют. Я 2005 вспоминаю питон-калькулятор на nokia и какое-то приложения для запуска py-скриптов, не сказал бы что тогда было сложно. В последний раз сталкивался в разговоре со знакомыми года два назад, сейчас тот человек переехал на компилируемые языки (увы не F#, но тогда и я не обращал внимания на него).

Evgeniy
08.04.2018
08:24:53

??
08.04.2018
08:25:50

Evgeniy
08.04.2018
08:26:09

Vasily
08.04.2018
08:26:22
У питона биндинг,вы шо

Evgeniy
08.04.2018
08:26:45

Vasily
08.04.2018
08:26:48
И большая коллекция библиотек

??
08.04.2018
08:26:51

Vasily
08.04.2018
08:27:05
А так говно говном, конечно

Evgeniy
08.04.2018
08:27:12
Вот @shwars преподает F#. :)

??
08.04.2018
08:28:17
Вот @shwars преподает F#. :)
На всю РФ один человек или есть ещё? Или "порог вхождения" не даёт? Например, тем же прикладным математикам из ВШЭ зашел бы.

Evgeniy
08.04.2018
08:31:22

Google

Vasily
08.04.2018
08:32:28
Мегафоновский цдн, кстати, на питоне написан

Anna
08.04.2018
08:33:24
Я не преподаю F#, но заставляю студентов на нем писать

??
08.04.2018
08:34:37

Anna
08.04.2018
08:35:25
Заставлять учиться вообще вредно, поэтому мой курс например по выбору

Dmitri
08.04.2018
08:36:50

Vasily
08.04.2018
08:40:25
Нельзя научить, можно научиться

Roman
08.04.2018
08:40:29

Vasily
08.04.2018
08:43:47
Кто не умеет работать-тот учит, кто не умеет учить-тот руководит :)

Roman
08.04.2018
08:43:51

Vasily
08.04.2018
08:47:27
Есть такая поговорка

Evgeniy
08.04.2018
08:48:05

Vasily
08.04.2018
08:48:27

Evgeniy
08.04.2018
08:48:36
Нету.

Vasily
08.04.2018
08:49:48
Ну смотри. Могу привести несколько примеров , которые ее подтверждают
Если интересно