
Klei
31.07.2018
02:17:26
@fvnever Бот не работает.

Evgeniy
31.07.2018
05:41:48
Привет.

Vasily
31.07.2018
07:02:11

Doge
31.07.2018
07:05:10

Google

Vasily
31.07.2018
07:08:50

Doge
31.07.2018
07:21:24
А где про это почитать доступным языком?
Вот есть более-менее статейка, где на примере рассматриваются и сравниваюся Free и final tagless как раз в скале:
https://softwaremill.com/free-tagless-compared-how-not-to-commit-to-monad-too-early/#toc-free-and-tagless-compared-how-not-to-commit-to-a-monad-too-early
Не уверен, что она прям супер доступная, т.к. требует небольшого понимания скала ФП экосистемы.

Vasily
31.07.2018
07:40:53
Ну я под доступной понимаю минимизацию сложных словесных конструкций и специальных терминов
Как минимум вот эту вот их работу с бд
https://www.reddit.com/r/fsharp/comments/5jyfyq/finally_tagless_style_in_f_alternative_to/
ВОт тут через констрейнты сделано
Что в принципе ок


Doge
31.07.2018
08:25:20
Вон там цитата от ОПа:
I've tried making a Cuda compiler in tagless style in F#, and it turns out you were right. Not just that HKTs were needed; if it were only that, my ideas could have worked, but it turns out that F#'s structural typing support works worse in practice than I thought, especially for nested polymorphic method calls with inlined functions.

Vasily
31.07.2018
08:30:15
Ну это да, конечно

Evgeniy
31.07.2018
12:54:04
https://github.com/kekyo/Microsoft.CodeAnalysis.ActivePatterns


Maks
31.07.2018
14:44:29
всех приветствую. я новичок. пишу модули для программы для гидравлического расчета водопроводных сетей на C#. специфика: модули пишутся как COM компонент (если имели дело с модулями для 1С, то там все очень похоже). часть задач связана с пользовательским интерфейсом. а часть задач - алгоритмы. наследование, инкапсуляцию и полиморфизм за год почти не использовал и только в общих чертах представляю, что это такое. в связи с этим у меня возникает вопрос: стоит ли мне часть модулей писать на F#? но для начала не могли бы вы мне помочь ответить на несколько вопросов:
- удобно ли будет в visual studio комбинировать c# и f#? первое для интерфейса, второе - для алгоритмов. я вроде слышал, что их можно будет запихнуть в одно решение.
- будет ли у меня преимущество по скорости, если некоторые алгоритмы я буду писать на f#, а не c#?
- часть данных, для которых я пишу алгоритмы, находится в базе данных, а часть можно вытянуть через api программы, для которой я пишу модули. соответственно, как будет проходить обмен данными между частью на c# и f#? можно ли передать f# функции словарь из c#?
- в одном видео видел различие между императивным и функциональным подходом к программированию. императивное: достаем данные из базы, что-то с ними делаем, заливаем обратно в базу. функциональное: передаем данные от одной функции к другой. на c# я как раз делал императивное, вроде как. не совсем понятно, как реализовывается функциональное. то есть, если мы написали функцию для изменения данных в базе, то мы изменяем в ней данные напрямую, не сохраняя их в памяти и не выгружая обратно в базу?

Google

Friedrich
31.07.2018
14:47:09
Норм вопросы.

Ayrat
31.07.2018
14:47:09
Очень много разных вопросов, тянет на трактат. Но по существу могу сказать следующее - лучше делай на C#


Friedrich
31.07.2018
14:47:32
Да, если новичок в C#, то я не советую сразу начинать лезть и в F# тоже.
всех приветствую. я новичок. пишу модули для программы для гидравлического расчета водопроводных сетей на C#. специфика: модули пишутся как COM компонент (если имели дело с модулями для 1С, то там все очень похоже). часть задач связана с пользовательским интерфейсом. а часть задач - алгоритмы. наследование, инкапсуляцию и полиморфизм за год почти не использовал и только в общих чертах представляю, что это такое. в связи с этим у меня возникает вопрос: стоит ли мне часть модулей писать на F#? но для начала не могли бы вы мне помочь ответить на несколько вопросов:
- удобно ли будет в visual studio комбинировать c# и f#? первое для интерфейса, второе - для алгоритмов. я вроде слышал, что их можно будет запихнуть в одно решение.
- будет ли у меня преимущество по скорости, если некоторые алгоритмы я буду писать на f#, а не c#?
- часть данных, для которых я пишу алгоритмы, находится в базе данных, а часть можно вытянуть через api программы, для которой я пишу модули. соответственно, как будет проходить обмен данными между частью на c# и f#? можно ли передать f# функции словарь из c#?
- в одном видео видел различие между императивным и функциональным подходом к программированию. императивное: достаем данные из базы, что-то с ними делаем, заливаем обратно в базу. функциональное: передаем данные от одной функции к другой. на c# я как раз делал императивное, вроде как. не совсем понятно, как реализовывается функциональное. то есть, если мы написали функцию для изменения данных в базе, то мы изменяем в ней данные напрямую, не сохраняя их в памяти и не выгружая обратно в базу?
По существу:
- да, в студии можно комбинировать проекты на C# и F#, получается достаточно удобно, особых недостатков такой схемы назвать не могу
- разницы в скорости между грамотно написанным F#- и C#-кодом нет; но в среднем функционально ориентированный код на F# может отставать по всяким микрооптимизациям от C#
- интероп между F# и C# работает отлично, можно передавать данные туда и сюда без проблем; точно так же можно лазить в базу и из F#
- да, функциональное программирование существенно отличается от императивного, однако, в программе на F# тебя никто особо не заставляет на этом сосредотачиваться


Maks
31.07.2018
14:58:24
спасибо, буду пока дальше все изучать.

Roman
31.07.2018
14:58:54
Привет!!

Evgeniy
31.07.2018
16:54:51
https://twitter.com/MangelMaxime/status/1024317123605221376

Vasily
31.07.2018
17:09:55
Мощно
Интересно, жс подсасывает?

Andrew
31.07.2018
17:18:01

Vasily
31.07.2018
17:18:28
Но спрашивал я немного другое ?

Roman
31.07.2018
17:59:35
https://twitter.com/MangelMaxime/status/1024317123605221376
часть пишет
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent"
HTMLAttr.Data ("target", "#navbarSupportedContent")
HTMLAttr.Custom ("aria-controls", "navbarSupportedContent")
часть
aria-haspopup="true"
aria-expanded="false"
AriaHasPopup true
AriaExpanded false

Friedrich
31.07.2018
18:02:11

Evgeniy
31.07.2018
19:20:36
> CLASSES FOR THE MANIACS: DEMYSTIFYING SRTP
Ммм, все как мы любим.
> A JOURNEY IN CONTRIBUTING TO THE F# COMPILER

Anna
31.07.2018
19:21:25
что с тобой?

Evgeniy
31.07.2018
19:22:09
Выбираю интересные доклады с предстоящего Open F#.
https://www.openfsharp.org/agenda/conference/
Ну, в смысле, я туда не поеду.
Но есть доклады, которые я бы хотел посмотреть в записи.

Google

Anna
31.07.2018
19:23:25
> UKULELE TABS IN F#
@Dolfik

Nikolay
31.07.2018
19:24:17
A Fun(ctional) music DSL - Domain Specific Languages - to compute Ukulele tabs from chords: Share the chords with Jérémie and he will show you where to place your fingers! With IRL ukulele songs.

Xak
31.07.2018
19:40:07
а можно скормить ему ноты скрипки и получить автоматом приличные, играбельные табы для электрогитары?

Friedrich
31.07.2018
20:39:29

Roman
31.07.2018
21:45:39
https://twitter.com/kozy_kekyo/status/1024235449936576513?s=19

Daniel
31.07.2018
22:34:50

?
01.08.2018
03:32:58
okurwa, везде эти китайботы набегают

Xak
01.08.2018
05:07:56
может какая не в меру умная нейронка уже умеет

Oleg
01.08.2018
05:08:53
Кстати про конференции и доклады: в нам в Нск едет @VagifAbilov (https://gdg-siberia.com/speakers)

Klei
01.08.2018
05:28:14

Oleg
01.08.2018
05:31:03
сам ищу
говорят, только в сентябре программа будет

Vagif
01.08.2018
06:21:48
Мой доклад будет тот же, что и на Dotnext двумя днями раньше - "Жизнь акторов в кластере". С примерами на F#.

Evgeniy
01.08.2018
07:57:14
?
https://twitter.com/sforkmann/status/1024562547381489666
@sirarsalih
What's the relevance of the car charging? Are you using F# to do it?
@sforkmann
Yes. For controlling charger and for billing.

Dmitry
01.08.2018
07:59:49

Дед Пегас
01.08.2018
08:02:42
basement это не совсем подвал.

Evgeniy
01.08.2018
08:17:32
Привет.

Google

Пайкер
01.08.2018
08:23:59

Ivan
01.08.2018
14:00:15
let rule = fun (t : Type, o : obj) ->
if typeof<'t>.IsAssignableFrom(t) then
(fun o -> rule(o :?> 't)) |> Some
else
None
Что здесь в конвертере не так?

Evgeniy
01.08.2018
14:06:17

Ivan
01.08.2018
14:07:40
let rule1
= fun (t : Type, o : obj) ->
if typeof<'t>.IsAssignableFrom(t) then
(fun o -> rule(o :?> 't)) |> Some
else
None
Что здесь в конвертере не так?
Пусть так - в глобал скопе есть rule
Он у меня вот сюда ворчит o :?> 't

Evgeniy
01.08.2018
14:09:10

Ivan
01.08.2018
14:09:56
Ну я б на элементарные вещи не велся ?:
let addTypeRule<'t> pc (rule : TypedProducerCase<'t>) =
let rule1 = fun (t : Type, o : obj) ->
if typeof<'t>.IsAssignableFrom(t) then
(fun o -> rule(o :?> 't)) |> Some
else
None
addRuleUnsafe pc rule1

Evgeniy
01.08.2018
14:10:14

Ivan
01.08.2018
14:11:59
This runtime coersion or type test from type
'a
to 't
involves an underminate type based prior to this program point...

Evgeniy
01.08.2018
14:14:04
Честно говоря, я ничего не понимаю в этом коде, то o — это аргумент rule1, то аргумент лямбды.

Ivan
01.08.2018
14:15:43
Вот тут точно клина словил, но помогло. Зачем object боксить? Он же вроде всегда забоксенный должен быть.

Evgeniy
01.08.2018
14:16:09

Ivan
01.08.2018
14:16:34
o : obj
Я ж впрямую типы в аргументах прописал

Evgeniy
01.08.2018
14:17:08
Читаем внимательно.
Честно говоря, я ничего не понимаю в этом коде, то o — это аргумент rule1, то аргумент лямбды.