@Fsharp_chat

Страница 40 из 772
Friedrich
17.04.2017
04:30:31
Там фри-монад ещё не хватает.

А вообще-то я вот лично не был бы против, если б человек использовал мои материалы при подготовке своего доклада. Но мог бы и сослаться на тех ребят, у которых позаимствовал идеи.

Evgeniy
17.04.2017
04:41:40
Не, я так.

Просто интересно стало.

Google
Evgeniy
17.04.2017
04:48:08
@fvnever Когда-нибудь я соберусь сделать факультатив про ФП и F#, и тоже буду тырить отовсюду. :)

Кстати, а вы знаете, что Сошников такой онлайн-курс ведет?

https://courses.mipt.ru/course/MIPT/f_sharp/

Friedrich
17.04.2017
04:48:49
Ну ты токо на источники ссылайся.

Evgeniy
17.04.2017
04:49:12
Канеш.

Мы же приличные люди.

Roman
17.04.2017
04:53:39
Лол. "Если хотите чтоб ваш код был красивый и компактный и мало кому понятный, то добро пожаловать на этот курс"

Friedrich
17.04.2017
05:04:39
Ну, хотя бы честно :)

Roman
17.04.2017
05:20:35
Ну, хотя бы честно :)
это все же субъективно.

Friedrich
17.04.2017
05:21:02
Это же шутка, ну!

Roman
17.04.2017
05:21:18
бессонная ночь.

Google
Vasily
17.04.2017
06:17:18
На хабр не знаю, стоит ли ориентироваться.Очень специфическое сообщество

Вот чего на f# реально не хватает, так это библиотеки интеропа с с#

Ну там преобразование типов,функций,этц.

Evgeniy
17.04.2017
06:19:21
Дык, надо написать.

Friedrich
17.04.2017
06:22:55
А что конкретно нужно? Давайте обсудим.

Vasily
17.04.2017
06:24:16
Тип ->опшн

Func ->func как минимум

Тьфу, fun

Friedrich
17.04.2017
06:25:21
Тип ->опшн
Так ведь просто дописываешь везде Some или Option.ofObj?

Func ->func как минимум
А вот тут интереснее. Для какого примера это нужно? Как-то вообще можно ли снаружи понять, что Func это не fun?

Vasily
17.04.2017
06:25:56
Friedrich
17.04.2017
06:26:13
А ты хочешь имплиситно чтобы?

Vasily
17.04.2017
06:27:11
А вот тут интереснее. Для какого примера это нужно? Как-то вообще можно ли снаружи понять, что Func это не fun?
Например,для выставления внешнего интерфейса наружу типа получения данных

Хочу имплисит ,да

Для бесшовного интеропа

Evgeniy
17.04.2017
06:28:02
Имплисит. :(

Friedrich
17.04.2017
06:28:03
Это всё имеет смысл, да. Я бы тоже хотел, чтобы эти конверсии имплиситно производились. Во всяком случае, для фунок — точно.

Для Option не совсем понятно, какой вариант должен быть умолчальным.

Ну и, похоже, что это всё за рамки библиотеки выходит. Потому что F# вообще неявных конверсий не любит и не делает их.

Vasily
17.04.2017
06:29:17
В теории option.ofobj с анбоксингом

Google
Evgeniy
17.04.2017
06:35:25
Явные преобразования функций -- это большая проблема?

Ну, надо немного пописать соответствующих интерфейсов и вспомогательных функицй.

Vasily
17.04.2017
06:36:59
Неразрешимых проблем там нет,нет инструментария, чтобы писать соответствующие инструменты типа tofun

Точнее хелперов

Nikolay
17.04.2017
07:08:53
А мне вот опять же не хватает нормального доступа к БД из F# Core

Vasily
17.04.2017
07:09:24
Ну это тоже можно написать

Как обертку над ADO.Net

Nikolay
17.04.2017
07:09:40
Конечно есть EF Core, но он кривоват пока

Мне бы хотелось что-нибудь типа Dapper + Slapper

Friedrich
17.04.2017
07:10:28
Так а кто мешает взять и заюзать Dapper?

Nikolay
17.04.2017
07:10:30
Но я пока слишком нуб в F# чтобы писать такое

Friedrich
17.04.2017
07:10:34
А :)

Nikolay
17.04.2017
07:11:17
Как-то не функциональненько получается с Dapper'ом

Friedrich
17.04.2017
07:11:30
Мне бы хотелось что-нибудь типа Dapper + Slapper
Короче, в целом в большинстве случаев в F# доступны все те же средства, которые есть в C#. Ты можешь спокойно брать и юзать C#-библиотеки.

Nikolay
17.04.2017
07:12:13
Да это понятно, но приходится обёртки делать над ними

И вместо того, чтобы писать полезные вещи, ты пишешь сраные обёртки)

Вчера полдня потратил, чтобы запросы к БД сделать через Dapper, и то не допилил толком обработку джоинов :) Это конечно по большей степени моя проблема в незнании F#, хотя благодаря этому узнал несколько интересных фишек, но блин, человеку начинающему изучать F# это не очень понравится, и он вполне может забросить это дело

Friedrich
17.04.2017
07:18:21
Поначалу-то оно в любом деле так!

Nikolay
17.04.2017
07:22:13
Ну как сказать, последний язык который я учил был Go, и он довольно неплохо зашёл, в том числе благодаря классной ORM и вообще богатому функционалу стандартной библиотеки.

Google
Nikolay
17.04.2017
07:48:33
я бы как нуб, глянул бы как это реализовывается
https://gist.github.com/Dolfik1/7d90385c4ddd8872290fc934a397c32f

Алексей
17.04.2017
07:48:44
Спасибо

Nikolay
17.04.2017
07:50:13
Но это я думаю такой себе код)

Алексей
17.04.2017
07:50:54
мне вообще принцип интересен подключения

а вообще никто не пробовал подключать либы написанные на f# к основному большому проекту на c#?

Vasily
17.04.2017
07:51:41
Ну я пробовал в свое время

Алексей
17.04.2017
07:51:56
Коллеги сильно били?

Vasily
17.04.2017
07:52:06
До продакшна не дошло

Nikolay
17.04.2017
07:52:29
А F# кортежи в C# это Tuple<>?

Vasily
17.04.2017
07:52:35
В целом, довольно сложно объяснить, зачем это нужно

Алексей
17.04.2017
07:52:36
угу

Nikolay
17.04.2017
07:54:29
И в F# кортеже получается тоже максимум 7 значений может быть? (не считая вложенных кортежей)

Roman
17.04.2017
07:59:04
Nikolay
17.04.2017
07:59:40
У меня группировка по 9 полям была?

Igor
17.04.2017
08:00:32
Алексей
17.04.2017
08:00:39
а кто-то пытался подружить крипто-про и f# ?

Nikolay
17.04.2017
08:01:41
Пкажи как этот код
Ты уверен что хочешь это видеть?)

Friedrich
17.04.2017
08:03:59
а вообще никто не пробовал подключать либы написанные на f# к основному большому проекту на c#?
Я всё время так делаю. Правда, коллег у меня нет. Может, поэтому и нет :(

Igor
17.04.2017
08:04:24
Ты уверен что хочешь это видеть?)
Нет, но все равно давай ?

Google
Nikolay
17.04.2017
08:05:14
Щас, я только скопировал код, и свет в офисе отрубился

Vasily
17.04.2017
08:05:24
Жесть какая

Igor
17.04.2017
08:05:35
Nikolay
17.04.2017
08:06:06
У репки на github у тебя нет?
Этого проекта нет, тырыпрайз решение

Friedrich
17.04.2017
08:07:15
Вообще, как правильно писать идиоматичный SQL на F# — я пока для себя не понял.

Ну то есть явно хочется тайп-провайдер поюзать. Прям жжотся.

Vasily
17.04.2017
08:07:45
Ну я бы квотейшны попробовал на самом деле

Friedrich
17.04.2017
08:07:47
Но какой порядок работы должен быть при использовании миграций и тайп-провайдеров – я пока не понял.

Vasily
17.04.2017
08:07:54
Они там прям ок зайдут

Nikolay
17.04.2017
08:10:06
var grouped = materials.GroupBy((f => new Tuple<int, string, Tuple<string, string, int?>, string, string, string, decimal>( f.P_MNT_PLACE.ID_MNT_PLACE, f.P_PIPMTR.P_IMPMTR.P_CLSMTR.P_MATRNM.SHORT_MATERIAL_NAME, new Tuple<string, string, int?>(f.P_PIPMTR.P_IMPMTR.P_SZMATR.NAME_SIZE, f.P_PIPMTR.P_IMPMTR.P_MTR_PRESSURE?.VALUE_TEXT, f.P_PIPMTR.P_IMPMTR.P_MTR_PRESSURE?.ID_MTR_PRESSURE_MSNT), string.Join(", ", f.P_PIPMTR.P_IMPMTR.P_CLSMTR.P_STMTR.OrderBy(k => k.P_GOST.GOST_OST_TU_NAME).Select(k => k.P_GOST.GOST_OST_TU_NAME)), string.Join(", ", f.P_PIPMTR.P_IMPMTR.P_CLSMTR.P_CLSMTR_GNRC.OrderBy(k => k.P_GENERC.P_MARKGN.NAME_PRESSMARK).Select(k => k.P_GENERC.P_MARKGN.NAME_PRESSMARK)), f.P_PIPMTR.P_IMPMTR.P_CLSMTR.P_TPMSNT.TYPE_UNIT_MEASUR_NAME, f.P_PIPMTR.P_IMPMTR.MASS_ED)));

Вот такая дичь :D

Roman
17.04.2017
08:10:28
Но какой порядок работы должен быть при использовании миграций и тайп-провайдеров – я пока не понял.
1. Мигрируешь утилитой. 2. Билдишь проект. 3. Исправляешь ошибки билда.

Nikolay
17.04.2017
08:10:52
На дурацкие названия полей внимания не обращайте)

Friedrich
17.04.2017
08:11:17
> new Tuple<int, string, Tuple<string, string, int?>, string, string, string, decimal> Попробуйте Tuple.Create :)

Nikolay
17.04.2017
08:11:34
Оракл не умеет в нормальные названия, онли Upper case и 30 символов максимум

Friedrich
17.04.2017
08:12:20
Вообще, тупля с туплями — это мощно, внушает :)

Nikolay
17.04.2017
08:12:56
Программируем как умеем)

Friedrich
17.04.2017
08:13:32
О, кстати, там бы анонимные типы хорошо зашли.

Всяко лучше, чем тупля туплей.

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