@Fsharp_chat

Страница 544 из 772
Vasily
07.04.2018
15:02:45
В кложе вашей богомерзкой

Мне и так по работе приходится чередовать чтение с++ кода и java

Roman
07.04.2018
15:03:56
@clojure_ru
Шутник

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

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

Evgeniy
07.04.2018
15:09:59
Нет.

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

Friedrich
07.04.2018
15:12:52
Коллеги, помогите понять, где я туплю
Кажись, там чёт неявно параметризовалось неправильно. Я бы попробовал явно выписать типы в билдере.

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
В бинде не надо было параметры типа выставлять
можно и выставить. только все member this.Bind<'a,'b>(m:ReadResult<'a>,f : 'a -> ReadResult<'b>) : ReadResult<'b> =

а то вывод типов клинит

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
А почему перегрузка методов - плохо? есть у меня например методы для запроса пользователя из базы: module User = let findById (Id: Id) = ... let findByLogin (Login: Login) = ... мне такой нейминг например не очень нравится - выходит User.findByLogin login, возможно было бы лучше назвать оба просто find - а какой из двух вызывается и так видно из параметра, но увы (?) так нельзя
Это чисто стиль кодинга, очевидно, более полное имя функции показывает намерение, потому как вашу переменную id или login могут обозвать как "x" (много вижу на F# подобного на github) и уже не понятно будет какая find перегрузка, если просто смотреть по тексту. Думаю перегружать не страшно в случае, когда имена переменных отражают немного смысл (если это возможно), но код короче, когда через иксы.

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

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# пользоваться.

?‍?
08.04.2018
07:01:53
Это ты ещё далеко не самый страшный пример нашёл :)
Взял первое попавшееся из открытого

Evgeniy
08.04.2018
07:06:42
https://twitter.com/lefthandedgoat/status/982786312653627392

Легаси!
Ну, у Сайма особый бекграунд, поэтому и код компилятора по современным стандартам не очень хороший.

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/lefthandedgoat/status/982786312653627392
Теперь с параллельными тестами!

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:26:09
В области н.р. fortran!
С разморозкой.

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
С разморозкой.
Ему учили на первом курсе. А питон и F# преподают?

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

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

?‍?
08.04.2018
08:28:17
А так говно говном, конечно
Вот и я тогда сказал знакомому

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

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

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

?‍?
08.04.2018
08:34:37
Я не преподаю F#, но заставляю студентов на нем писать
Вроде заставлять вредно, может отбить желание продолжать на нём, если распробуют что-то другое

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

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

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

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
Ну смотри. Могу привести несколько примеров , которые ее подтверждают

Если интересно

Страница 544 из 772