
Летучая
08.05.2017
13:07:17
Всегда бесило такое поведение
на F# прям красота
надо запостить в примеры кода

Friedrich
08.05.2017
13:07:39
Оно вполне понятное, тут вам на C++!

Igor
08.05.2017
13:07:52
Не JS ?

Google

Friedrich
08.05.2017
13:08:17
В тайпскрипте, например, вопрос типизации такого выражения не стоит, потому что числовой тип только один :(

Летучая
08.05.2017
13:08:21
а если бы ещё запелили что-то типа
where T : int or double or float

Friedrich
08.05.2017
13:08:47
У меня была мысль обрисовать ситуацию с помощью тайпклассов, но я решил наших C#-друзей не пугать этими раздутыми (пока) определениями :)

Pig
08.05.2017
13:10:23
Дети, а вот это лямбда-2!

Friedrich
08.05.2017
13:18:11
Вот реализация на "тайпклассах" (в такой код бы развернулся тайпкласс из имеющегося пропозала на тайпклассы в C#): https://hastebin.com/ujatihazus.cs
Обратите внимание на трюк с new TypeClass(), который возможен благодаря struct constraint.

Evgeniy
08.05.2017
13:45:44
Тайпклассы — это то, что появится сначала в C#, а только потом в F#.

Friedrich
08.05.2017
13:49:45

Igor
08.05.2017
13:54:38

Friedrich
08.05.2017
13:55:19
Ну, я тут конкретную задачу решал. Если нужно было бы ещё более обобщённое решение, и у меня были бы стандартные тайпклассы, то можно было бы сделать и поизящнее.

Илья
08.05.2017
13:55:28
На F# можно ботов для телеграма писать?

Friedrich
08.05.2017
13:55:58

Google

Илья
08.05.2017
13:56:53

Летучая
08.05.2017
14:02:17
@Dolfik эфшарповую либу для этих целей писал, не знаю, дописал или нет.

Nikolay
08.05.2017
14:03:56
Времени совсем нет, вчера вечером только вернулся домой, дел куча :)
Но PR приветствуются)

Friedrich
08.05.2017
14:05:15

Nikolay
08.05.2017
14:05:33
https://github.com/Dolfik1/Funogram

Илья
08.05.2017
14:09:41
Вот это работает? Хз?
https://github.com/monad/TeleFone

Friedrich
08.05.2017
14:12:13
Это в прошлом месяце было уже :)

Nikolay
08.05.2017
14:13:18

Igor
08.05.2017
14:13:33
Имхо эти все либы от лукавова, есть же интеропт ? (и проработанные C# либы)

Nikolay
08.05.2017
14:14:11
getUpdates, и то не со всеми аргументами, и sendMessage
И тоже не со всеми аргументами)
Плюс не будет работать на .Net Core

Igor
08.05.2017
14:20:33
Плюс не будет работать на .Net Core
Кстати насчет DSL и option параметров.
Можешь посмотреть на апи которое предоставляет Fable для React(Native).
Там очень “интересный” подход со списками и фабриками параметров.
Кода наверное будет очень много, зато расширяемость на высоте.
Можно хоть 100 новых опциональных параметров добавить к запросу.

Nikolay
08.05.2017
14:21:30

Илья
08.05.2017
15:03:50
никак не врубаюсь для чего нужны монады(

Pig
08.05.2017
15:05:22
что бы мухлевать с эффектами

Google

Илья
08.05.2017
15:05:47

Friedrich
08.05.2017
15:07:30
что? какими эффектами? о_О
Имеется в виду понятие "эффектов" из некоторых развитых систем типов. Там под эффектами обычно понимают всякие интересные взаимодействия — ввод-вывод, например.

Pig
08.05.2017
15:07:45
разными - исключениями, вводом-выводом, логами, изменяемым состоянием, недетерминированными вычислениями

Igor
08.05.2017
15:08:00

Friedrich
08.05.2017
15:08:16

Илья
08.05.2017
15:08:26

Friedrich
08.05.2017
15:08:34
Про цикл же всё понятно, правда? И никто не делает из циклов какого-то культа.

Pig
08.05.2017
15:08:35
я до сих пор не знаю что это такое, но пользуюсь

Igor
08.05.2017
15:09:26
нееее... только не хаскел...
Ну не знаю, так в чате бессмысленно объяснять.
Ты либо ничего не поймёшь или поймёшь неправильно.
А в виде целый час расжевывается на простых примерах.

Илья
08.05.2017
15:09:39

Friedrich
08.05.2017
15:11:47

Pig
08.05.2017
15:11:48
null это такой очень грязный вариант Maybe

Friedrich
08.05.2017
15:12:04
В смысле, ну правда, избавляют же.
Хотя он там под капотом и остаётся.

Igor
08.05.2017
15:12:36
Я тут кстати пытаются всосать "свободные монады" (free monads).
Есть у кого опыт?

Pig
08.05.2017
15:12:42
а исключения в C#/Java это такой странный вариант типов-сумм

Илья
08.05.2017
15:12:52
писать a.HasValue длиннее чем a != null

Pig
08.05.2017
15:13:14
Так никто не пишет

Friedrich
08.05.2017
15:13:29

Evgeniy
08.05.2017
15:13:33
@DarkByte2016 Ты путаешь контейнер и монаду.

Google

Летучая
08.05.2017
15:13:47

Илья
08.05.2017
15:14:17

Friedrich
08.05.2017
15:14:27
Ну, в данном случае ссылка и правда совершенно уместная. Лекции Бартоша — хорошие, даже если ты не знаешь хаскеля.

Летучая
08.05.2017
15:14:39
Монады по крайней мере и там и там есть.

Friedrich
08.05.2017
15:15:02
Ха, не совсем!

Летучая
08.05.2017
15:15:06
Хм?

Evgeniy
08.05.2017
15:15:26
@DarkByte2016 Я могу попробовать объяснить, когда здесь потише будет. :)

Friedrich
08.05.2017
15:15:34
В F# есть куда более прагматичная штука — computation expressions. Они позволяют в числе прочего реализовать и монады.

Admin
ERROR: S client not available

Pig
08.05.2017
15:15:54
А что в хаскеле непрагматичного?

Илья
08.05.2017
15:15:55
Как будто очень много различий.
Дохера. У хаскела вырвиглазный синтаксис это раз, его нигде на практике не используют, а соответственно нет смысла его учить это два, F# работает на платформе .NET это еще один плюс в его карму.

Friedrich
08.05.2017
15:16:12
Но Дон специально нигде про монады не говорит, потому что это слишком расплывчатое понятие, и он не хотел им пугать новичков.

Evgeniy
08.05.2017
15:16:41
@DarkByte2016 Слушай, мы тут не любим субъективную критику. :(

Friedrich
08.05.2017
15:16:45
С помощью computation expression сходу понятно, как. Реализуешь метод await, и всё.
А для монады нужно ещё что-то думать!
Вот когда _думать_ — это непрагматично.
(хотя и полезно, и хаскель хороший, я его не критикую, не подумайте)

Pig
08.05.2017
15:17:27
Afaik просто оборачиваешь все что нужно в Async и все

Google

Evgeniy
08.05.2017
15:17:55
@DarkByte2016 У Haskell нормальный синтаксис, его используют, в том числе и в больших компаниях.
Но это чат не про Haskell.
Все верно.

Friedrich
08.05.2017
15:18:17
Да, я уже начал скатываться в холивор. Сматываю удочки!

Летучая
08.05.2017
15:18:29
Ты разжечь что ли решил?
Обычный окамл

Igor
08.05.2017
15:18:44

Friedrich
08.05.2017
15:19:13
Про прагматичность computation expressions и сравнение с монадами мне кто-то недавно показывал вот этот папер: http://tomasp.net/academic/papers/computation-zoo/
Предлагаю всем интересующимся ознакомиться, а потом продолжим разговор.

Pig
08.05.2017
15:19:20
@DarkByte2016 приходи посмотреть на живых хаскелистов)) https://gitter.im/ruHaskell/forall

Илья
08.05.2017
15:20:03

Igor
08.05.2017
15:20:18

Evgeniy
08.05.2017
15:20:28
@DarkByte2016 Пожалуйста, не разжигай тут.
Мы твое мнение с первого раза поняли.

Friedrich
08.05.2017
15:20:58
Да. Господа, пожалуйста, обсуждение хаскелевакансий перенесите в другой чат.

Летучая
08.05.2017
15:21:07

Pig
08.05.2017
15:21:09
Да, давай один на один в лс если не зассал!
))

Friedrich
08.05.2017
15:21:18

Летучая
08.05.2017
15:21:19
Оч жирно
Из монитора прям хлещет

Evgeniy
08.05.2017
15:21:33
@fvnever А еще на CE можно немонадические штуки делать. Как в Freya. :)