@Fsharp_chat

Страница 166 из 772
Roman
26.05.2017
07:27:39
Элегантное решение, кстати
Объясни, плз, что там?) я пробежался но так и не понял

Vasily
26.05.2017
07:31:27
Чуваки описывают правила формирования json

Roman
26.05.2017
07:31:28
До меня наконец-то дошло, зачем там квотейшны
Статья не большая, может получится перевод замутить?

Google
Vasily
26.05.2017
07:32:37
Ну и используют квотейшны для получения имен переменных конфига

Так сказать, для гарантии компиляции

Корректной

Pawel
26.05.2017
07:33:37
Ну так все равно же для каждой из, описывать своё поведение в bind.
а это имплементация тайп-класса, за которую ответственен автор типа, реализующего тайп-класс.

Roman
26.05.2017
07:34:59
а это имплементация тайп-класса, за которую ответственен автор типа, реализующего тайп-класс.
Т.е. Введение тайпклассов потребует от всех либописателей изменить их реализацию монад

Vasily
26.05.2017
07:35:10
В целом, подобный подход с квотейшнами можно было бы по идее использовать при написании сериализаторов

Точнее, мапперов

Roman
26.05.2017
07:35:16
Но у нас же есть computation expressions

Vasily
26.05.2017
07:36:01
Хммм

Интересно, к JSOn.net можно прикрутить как замену JSonProperty?

Roman
26.05.2017
07:36:54
Но у нас же есть computation expressions
Мне кажется это вполне себе возможность описывать близкое к тайпклассам поведение

Pawel
26.05.2017
07:39:28
Чуваки описывают правила формирования json
они описывают каким образом их UI сериализуется в json

Google
Evgeniy
26.05.2017
07:39:33
@neftedollar Нет. Тайпклассы это не про монады.

Давайте уже закроем эту тему. :)

Roman
26.05.2017
07:40:09
@neftedollar Нет. Тайпклассы это не про монады.
Ну так и computation expressions можно не только для монад использовать

Vasily
26.05.2017
07:40:49
Когда я слышу слово монады, у меня начинают седеть волосы на голове :(. А я еще относительно молод

Evgeniy
26.05.2017
07:41:14
Давайте просто закроем эту тему. :)

Vasily
26.05.2017
07:42:07
Монады к кровавому энтерпрайзу отношения не имеют :)

Evgeniy
26.05.2017
07:42:09
А то у нас тут круговорот отрывочных определений, и никто ничего не понимает в итоге.

Pawel
26.05.2017
07:45:16
для страждущих. "Изучай хаскель во имя добра" - определённо лучшее введение в монады и тайп-классы

Evgeniy
26.05.2017
07:45:20
Просто я теперь, кажется, согласен с @angmarr, что в таких случаях надо обращаться к Haskell, где есть каноничные реализации монад, type classes, HKT...

Да.

А F# — это что-то вроде Go от мира ФП. :)

Vasily
26.05.2017
07:54:49
Кстати, коллеги, такой вопрос - Expr может приезжать из внешнего мира?

Внешнего по отношению к модулю

Я имею в виду

Roman
26.05.2017
07:58:48
Я имею в виду
А почему нет?

Если это будет параметр)

Vasily
26.05.2017
07:59:16
Хмм... надо глянуть, как его из c# задать :)

Roman
26.05.2017
08:00:23
Хмм... надо глянуть, как его из c# задать :)
По моему есть ещё тема, что ты на параметр вешаешь атрибут reflection definition и у тебя сразу приходит экспрешшн. Но я могу путать

Google
Doge
26.05.2017
08:00:45
А F# — это что-то вроде Go от мира ФП. :)
Я бы не сказал, что быть Go - это что-то хорошее. Всё же го - очень спорный язык в плане своих решений и его коммюнити, которое прямо пронизано духом анти-интеллектулизма.

Evgeniy
26.05.2017
08:01:25
@DogeShibu Я про отказ от некоторых фич.

Осознанный.

Roman
26.05.2017
08:01:44
Vasily
26.05.2017
08:15:58
И еще один вопрос - как преобразовать Linq выражение в expr?

Беглый гугл ничего не нашел

Pawel
26.05.2017
08:33:35
Я бы не сказал, что быть Go - это что-то хорошее. Всё же го - очень спорный язык в плане своих решений и его коммюнити, которое прямо пронизано духом анти-интеллектулизма.
Вот тут хорошо объясняется, почему учОные всего мира подняли головы и набрасывают на Go: http://npf.io/2014/10/why-everyone-hates-go/

Это я к тому что суть претензий к F# у тех же людей - она та же примерно

сначала делается из инструментария культ (из деликатности не добавляю "карго"), - а потом их обижает/возмущает даже самоё существование неверных собак, хотя оные ничего такого и в мыслях не имели

Doge
26.05.2017
08:45:24
Вот тут хорошо объясняется, почему учОные всего мира подняли головы и набрасывают на Go: http://npf.io/2014/10/why-everyone-hates-go/
Да не, идеология го в принципе понятна и не плоха сама по себе. Простой и предсказуемый язык - это тоже хорошо. Проблема в том, что в стремлении к упрощению они потеряли консистетность и предсказуемость в некоторых фичах языка. То есть, наличие дженериков у встроенных коллекций, но невозможность обьявить свой дженерик тип.

Anton
26.05.2017
09:09:21
Ребята... Возник такой наверное очень десткий вопрос: Можно ли изучать F# не разбираясь в теории категорий ? Просто вот в чём дело... Я замарочился, что ничего не понимаю в монадах, моноидах, функторах и т.д... Решил значит выучить теоркат... После пары страниц книги я понял что не потяну, спустился ниже до теории типов, тоже сложновато, спустился до теории множеств... Вроде бы с трудом, но потихоньку пытаюсь учить... Но в итоге я уже пол года пытаюсь разобраться в теории, но не строчки не написал на F# и вообще забросил его изучение. И задумался... А правильно ли я вообще всё делаю?

Vasily
26.05.2017
09:09:50
Зависит от того, какие цели преследуешь

Evgeniy
26.05.2017
09:09:50
@the_RAMZAY Можно. Просто пиши код и читай https://fsharpforfunandprofit.com

Anton
26.05.2017
09:11:56
Основная цель - хочу быть учёным. Разбираться во всех этих монадах, моноидах, метаязыках, полиморфизмах, алгоритмах выведения типов и т.д. Цель сейчас - хочу научиться писать на F# и решать домашние и продакшен задачи.

@gsomix я учился по этому сайту эдак в декабре - очень годно, но ушел в сторону теорката по выше уже представленному плану.

Evgeniy
26.05.2017
09:13:32
@the_RAMZAY На сайте все интересующие тебя понятия объясняются почти на пальцах.

Начни с него.

И пиши побольше кода. Попробуй реализовать моноид, монаду, какой-нибудь парсер.

Anton
26.05.2017
09:14:10
Вот с C++, C#, JS я как-то просто сидел, писал код и почитывал книги по языкам. А тут, я не понимаю даже порою, что вы говорите. Очень стыдно, потому что я не понимаю, что такое "монада", "моноид", "функтор", "квантор".

Pawel
26.05.2017
09:14:56
Кто сказал квантор? ^_O

Google
Doge
26.05.2017
09:15:10
Вот с C++, C#, JS я как-то просто сидел, писал код и почитывал книги по языкам. А тут, я не понимаю даже порою, что вы говорите. Очень стыдно, потому что я не понимаю, что такое "монада", "моноид", "функтор", "квантор".
Все эти термины удобнее воспринимать как просто ещё одни названия у паттернов. То есть эти вещи не сложнее, чем какая-нибудь фабрика или декоратор из банды четырёх.

Anton
26.05.2017
09:15:13
пытаюсь понять из теории множеств. Но от F# совсем отошел и до всех этих понятий в учебниках ещё огогого.

По этому вчера впал в депрессию из за порочного круга теории.

Vasily
26.05.2017
09:16:20
Забей

Anton
26.05.2017
09:16:34
Чувствую себя совсем дураком просто.

Vasily
26.05.2017
09:16:36
Многие теоретические вещи становятся понятны, только когда много практики

Вон я дебил и прекрасно себя чувствую

Pawel
26.05.2017
09:16:54
а зачем тебе быть именно учёным? программизм - это же инженерная отрласть, а не научная.

Anton
26.05.2017
09:17:16
учёным - это детская мечта =)

мне нравится всё это.

Admin
ERROR: S client not available

Vasily
26.05.2017
09:19:18
Моя мечта стать программистом в свое время разбилась, когда я на ВМК не поступил :)

Doge
26.05.2017
09:19:32
Смотри, сейчас будет объяснение на пальцах: функтор, например - это такой тип F<T>, что для него существует функция Map вида F<K> Map<T,K>(Func<T, K> f, F<T> functor)

Artemy
26.05.2017
09:19:38
@the_RAMZAY про монады, функторы и аппликативные функторы по-простому неплохо в этой статье описано: https://habrahabr.ru/post/183150/ По-моему, должно хватить, чтобы начать въезжать в тему. Правда, в статье опираются на Хаскелль. Но если знаком с тем, что из себя представляют функции и типы в нём, то должно быть понятно.

Anton
26.05.2017
09:20:01
ого спасибо вам.

Igor
26.05.2017
09:20:05
учёным - это детская мечта =)
А тебе сколько годочков то? И ты в учишся сейчас?

Anton
26.05.2017
09:20:17
21 годик. Бгуир.

Artemy
26.05.2017
09:20:32
Ух ты

Vasily
26.05.2017
09:20:32
Ну юности склонен максимализм

Artemy
26.05.2017
09:20:40
21 годик. Бгуир.
Аналогичная ситуация

Google
Evgeniy
26.05.2017
09:21:39
@the_RAMZAY То, что не доходит через голову, дойдет через руки. :)

И еще нас можно дергать немного.

Doge
26.05.2017
09:22:18
Смотри, сейчас будет объяснение на пальцах: функтор, например - это такой тип F<T>, что для него существует функция Map вида F<K> Map<T,K>(Func<T, K> f, F<T> functor)
Но с одним но, для этого типа и этой функции должны выполнятся правила: Map(Identity, functor) == Identity Map(F(G), functor) == Map(F, Map(G, functor))

Если то хочешь программировать, то удобнее воспринимать эти конструкции не как математические объекты, а как обычные паттерны.

Vasily
26.05.2017
09:23:30
Ну в лямбда исчисление лучше не лезть, конечно

Оно далеко от реальных задач

Anton
26.05.2017
09:23:48
лазил

=)

даже немного понял

поигрался

Doge
26.05.2017
09:24:10
А если хочешь математики, то читай теорию категорий для работающего математика, например, но она требует достаточно неплохих знаний в математике. Как минимум, общую алгебру надо знать хорошо.

Evgeniy
26.05.2017
09:25:37
@DogeShibu Чтобы давать какие-то советы по литературе, нужно сначала бекграунд узнать.

Vasily
26.05.2017
09:27:58
Я вот по образованию не математик, поэтому теоретические вещи тяжело заходят

Anton
26.05.2017
09:31:45
Мне математика тоже очень плохо заходит.

Пытаюсь понять, изучить, но это очень с трудом.

Vasily
26.05.2017
09:32:12
Поэтому я забил и смотрю на все эти вещи из практической плоскости

Т.е. есть практическая задача, надо ее решить

Anton
26.05.2017
09:32:40
По поводу лямбда исчислений. Я где-то день на них потратил, но вроде понял..

Вот тут вот игрался https://people.eecs.berkeley.edu/~gongliang13/lambda/#firstPage

Evgeniy
26.05.2017
09:33:22
А я математик по образованию. Но совсем не тот! Поэтому для меня F# тоже просто практический инструмент.

Artemy
26.05.2017
09:34:06
Я вот как бы совсем неопытен, но мне кажется все эти монады, функторы и т.п. в 1-й раз лучше всего рассматривать в контексте Хаскелля, т.к. его система типов под это заточена. А значит, проще всего именно на нём в качестве тренировки реализовывать подобные штуки.

Anton
26.05.2017
09:34:10
@DogeShibu хм, воспринимать как паттерны... Интересная мысль. Нужно об этом подумать.

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