
Alexey
15.05.2017
11:34:35
Комбинаиоры для доступа и изменения перзистентных структур данных

Ivan
15.05.2017
11:34:45
Линза - это тапл из геттера и сеттера с сигнатурой:
'a -> 'b * 'b -> 'a -> 'b

Vasily
15.05.2017
11:35:19
И какие она проблемы решает?

Ivan
15.05.2017
11:35:55
Две линзы можно скомбинировать для доступа к в внутренностям неизменяемого класса и получения его измененной копии

Google

Vasily
15.05.2017
11:36:58
Хотелось бы пример из реальной жизни, можно без кода

Ivan
15.05.2017
11:37:12
соврал с сигнатурой: 'a->'b * 'a -> 'b ->'a

Ed
15.05.2017
11:37:20
Evan Czaplicki считает, что линзы это анти-паттерн

Pavel
15.05.2017
11:38:04

Ed
15.05.2017
11:38:26
будте плоскими лучше

Ivan
15.05.2017
11:38:40
Угу, только что не проект, то там свои линзы сидять

Pavel
15.05.2017
11:39:39
http://bugsquash.blogspot.ru/2011/11/lenses-in-f.html - не по русски, но из примеров должно быть ясно

Ivan
15.05.2017
11:40:24
Ну тогда уж https://xyncro.tech/aether/

Vasily
15.05.2017
11:40:29
Ага, почитаю
Вторую ссылку ща сам нашел

Pavel
15.05.2017
11:40:47
Эти сложнее, и я не стал рекомендовать, пушто пол года назад там не было доков вменяемых
Или были, я уже не помню.

Ivan
15.05.2017
11:41:04
Там не плохо по теории

Google

Pavel
15.05.2017
11:41:12
To start understanding the what, and importantly the why, the introduction to Lenses is a good place to start. This is best followed by a useful companion to lenses when we’re dealing with data which implies uncertainty, Prisms. We also dive in to Morphisms, another hugely useful tool for making it easy to work with data in more usable forms.

Ivan
15.05.2017
11:41:15
По самой либе доки хуже

Evgeniy
15.05.2017
11:41:54
@edvail Мне нравится ход мыслей czaplic. :)

Vasily
15.05.2017
11:43:01
Концепция прикольная, конечно

Artemy
15.05.2017
11:43:53
Вспомнил, что ставил unsigned CI builds для Visual F# Tools ранее. Удалил, откатив до релизной версии. Обновился до последней signed Nightly. Поддержка папок появилась. Спасибо за помощь! ?

Vasily
15.05.2017
11:44:03
Короче, что-то вроде XPath по идее, как я понимаю
На предыдущей работе могли пригодится, ибо хорошо на графовую базу ложатся

Evgeniy
15.05.2017
11:52:20
Нужно помнить, что у F# много проблем с инструментами и уже существующими языковыми конструкциями. Введение новых конструкций в язык не решит этих проблем, но добавит свежих. А для чего?
Я не думаю, что фичи, позволяющие писать код как в Haskell -- это то, что сейчас необходимо в первую очередь.

Pavel
15.05.2017
11:53:38
А как nightly - канал настроить?

Ivan
15.05.2017
11:54:19
Писать код как в Хаскел вряд ли получится - больго рантайм разный ?

Vasily
15.05.2017
11:55:08
В целом идея линз мне лично пока нравится, ибо позволяет управлять сложностью

Ivan
15.05.2017
11:55:13
А вот дернуть из академика полезные возможности - это было бы, имхо, не плохо

Evgeniy
15.05.2017
11:55:48
@pavelhritonenko https://blogs.msdn.microsoft.com/dotnet/2017/03/14/announcing-nightly-releases-for-the-visual-f-tools/
Я бы куда больше хотел, чтобы вот это починили.
https://github.com/Microsoft/visualfsharp/issues/2741#issuecomment-301445731
Никуда не годится. :(

Most
15.05.2017
12:01:26
Brain привет :)

Ed
15.05.2017
12:08:39
http://i.imgur.com/4fHw3Fd.png

Roman
15.05.2017
12:10:11

Ed
15.05.2017
12:10:18
ага

Google

Sergey
15.05.2017
12:16:18

Artemy
15.05.2017
12:26:57

Vasily
15.05.2017
12:42:28
По ссылке на доки, я имею в виду

Mikhail
15.05.2017
12:43:35

Vasily
15.05.2017
12:45:08
Хммм... человек тоже пошел по пути внешнего fsx скрипта

Sergey
15.05.2017
12:53:15

Vasily
15.05.2017
12:53:33
У меня тоже
Ссылка на доки не работает

Sergey
15.05.2017
12:54:51
я думаю она никогда не работала, у проекта нету ph-pages

Vasily
15.05.2017
12:55:02
Ясно

Evgeniy
15.05.2017
12:55:08
Mikhail Много всякого. Хотелось бы нормальные stacktraces для async, STRP не очень удобно использовать, type providers довольно ограничены, новые struct-штуки некоторые ошибки вызывают, в стандартной библиотеке некоторых вещей не хватает, сообщения об ошибках не везде понятные.
Нужно делать много работы.
Только не поймите это как нытье. Просто сводка тех проблем, про которые я читал. :)

Roman
15.05.2017
13:00:06
Но в принципе для энтерпрайза всего хватает. ))
Я некоторые вещи даже не использовал ещё

Vasily
15.05.2017
13:03:21
Для энтерпрайза не хватает некой замены ORM, имхо

Google

Vasily
15.05.2017
13:05:03
Нашел имплементацию линз в FsharpX - действительно крутая штука

Илья
15.05.2017
13:15:33

Vasily
15.05.2017
13:16:36
Ну EF все же не торт в общем случае

Илья
15.05.2017
13:16:38

Vasily
15.05.2017
13:17:07
Самая вкусная фишка, по идее - sql complie-time checking

Илья
15.05.2017
13:17:07

Admin
ERROR: S client not available

Vasily
15.05.2017
13:17:24
Ну и более-менее развесистой моделью

Илья
15.05.2017
13:18:14

Vasily
15.05.2017
13:18:41
Любой ORM в классическом понимании имеет большие расходы на материализацию
Плюс еще расходы в виде неоптимального SQL
КОторый он генерит

Илья
15.05.2017
13:19:15

Vasily
15.05.2017
13:19:31
Представление таблицы в виде entity

Илья
15.05.2017
13:19:34

Friedrich
15.05.2017
13:20:10
Сам по себе EF ничем не плох. Но его реализация сегодня очень тесно завязана на C# и мутабельные классы, поэтому из F# с ним работать неудобно.

Vasily
15.05.2017
13:20:21

Ivan
15.05.2017
13:20:44
Вообще то для функциональных языков реляционная модель намного роднее, чем объектная. Так что ОРМ функциональщикам вреден

Google

Vasily
15.05.2017
13:21:15
Имея возможность валидации sql, можно от ORM в целом отказаться

Илья
15.05.2017
13:21:17

Friedrich
15.05.2017
13:21:37
@DarkByte2016, я верю, что люди так делают, но это далеко не единственный способ взаимодействия с SQL. Я не могу даже сказать, что он популярный (хотя тут могу ошибаться).

Vasily
15.05.2017
13:24:14
Поэтому лучше на компайл тайме ловить
Всякое

Ivan
15.05.2017
13:24:36
Здесь скорее очень пригодился бы type provider из Expr

Илья
15.05.2017
13:24:47

Vasily
15.05.2017
13:25:00

Friedrich
15.05.2017
13:25:02
Тайп-провайдеры в F# очень хороши для SQL, но пока не идеальны.
Лучшее, что я для работы с SQL пока что видел — это ScalikeJDBC.

Vasily
15.05.2017
13:25:37

Friedrich
15.05.2017
13:25:40
(ещё бы компилтайм-валидацию туда, и вообще бы огонь получился)

Илья
15.05.2017
13:26:32

Friedrich
15.05.2017
13:26:36
Комбинировать запросы тоже нужно, кстати. Если ваша ORM не даёт нормального способа для этого — народ будет склеивать строки и предаваться пр. ужасам в коде.

Ivan
15.05.2017
13:27:40
Получить структуру данных в виде рекордов и связей довольно просто с помощью тайп провайдера, но дальше идет прожекшен и джойны - а вот их можно выразить в виде Expr и подсунуть тайп провайдеру, чтобы он сгенерировал типизированный результат

Vasily
15.05.2017
13:28:20