@Fsharp_chat

Страница 127 из 772
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
Кстати, кто по-русски объяснит, шо есть линзы
Пара методов для обновления части immutable рекордов, которые можно друг с другом "складывать", чтобы смотреть внутрь развесистой структуры

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
http://i.imgur.com/4fHw3Fd.png
Это по линзам?

Ed
15.05.2017
12:10:18
ага

Google
Sergey
15.05.2017
12:16:18
С выходом Core 2 обещали просто TypeProviders допилить
Не совсем, скорее всего к концу года и сначала только erased https://github.com/Microsoft/visualfsharp/issues/2406

Еще бы тайп провайдеры из тайп провайдеров...
мы к этому близки https://github.com/pezipink/MixinProvider )

Artemy
15.05.2017
12:26:57
C Nightly вроде все работает
Да, уже разобрался. Спасибо. :)

Vasily
15.05.2017
12:42:28
мы к этому близки https://github.com/pezipink/MixinProvider )
Доки есть по нему кроме блога? Ибо по ссылке дает 404

По ссылке на доки, я имею в виду

Vasily
15.05.2017
12:45:08
мы к этому близки https://github.com/pezipink/MixinProvider )
Ну и смущает, что последний коммит два года назад

Хммм... человек тоже пошел по пути внешнего fsx скрипта

Sergey
15.05.2017
12:53:15
Доки есть по нему кроме блога? Ибо по ссылке дает 404
у меня работает ссылки и на блог и на видео

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
Для энтерпрайза не хватает некой замены ORM, имхо
так вроде EF тут есть, я даже находил фишарповый враппер

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

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

Илья
15.05.2017
13:17:07
Ну EF все же не торт в общем случае
Почему? В F# не пользовался, но в C# - мой любимый фреймворк для работы с БД.

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
Плюс еще расходы в виде неоптимального SQL
Ну это форева спорная холиварная штука. ?

Представление таблицы в виде entity
Ну. Это же маппинг простой. Тебе все равно придется юзать маппер если ты будешь юзать скл.

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

Vasily
15.05.2017
13:20:21
Ну это форева спорная холиварная штука. ?
На самом деле вся эта хрень придумана потому, что в c# etc нельзя в компайл-тайме валидировать sql запросы

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

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

Илья
15.05.2017
13:21:17
На самом деле вся эта хрень придумана потому, что в c# etc нельзя в компайл-тайме валидировать sql запросы
Ну запросы так-то пишутся обычно в Management Studio - где есть валидация, а потом копируются в ресурсник и юзаются как проперти в нужном месте.

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
@DarkByte2016, я верю, что люди так делают, но это далеко не единственный способ взаимодействия с SQL. Я не могу даже сказать, что он популярный (хотя тут могу ошибаться).
Просто комбинировать два языка в одном файле - всегда было плохой затеей. Недаром в некоторых шаблонизаторах html жестко ограничивают шаблоны, не давая писать кодом, а только шаблонами. Например в Django.

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
Просто комбинировать два языка в одном файле - всегда было плохой затеей. Недаром в некоторых шаблонизаторах html жестко ограничивают шаблоны, не давая писать кодом, а только шаблонами. Например в Django.
Никто не говорит про комбинирование, речь идет про корректную генерацию кода под конкретный sql и соответствие этого sql структуре базы

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
Чего? Я так понимаю имелось ввиду просто фигачить SQL строками, типа string query = "select * from mytable";
Ну и чтобы строчка проверялась на корректность структуре базы

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