@Fsharp_chat

Страница 654 из 772
Klei
31.07.2018
02:17:26
@fvnever Бот не работает.

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

Doge
31.07.2018
07:05:10
Мне показалось, что final tagless похож на computation expressions
Важная часть того, как tagless final сейчас в скале исползуют - это абстракция от целевой монады/эффекта/функтора. Полноценно сделать это без хаков в F# сейчас не выйдет.

Google
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
https://www.reddit.com/r/fsharp/comments/5jyfyq/finally_tagless_style_in_f_alternative_to/
Там как раз в комментариях обсуждают, что без HKT полноценный tagless final сделать всё равно не выйдет.

Вон там цитата от ОПа: 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
часть пишет 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
Ну, оно и понятно — для некоторых атрибутов сделали поддержку, а для некоторых нет, и поэтому оно использует HTMLAttr.Custom.

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
> UKULELE TABS IN F# @Dolfik
Хах, забавно)

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, везде эти китайботы набегают

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

Klei
01.08.2018
05:28:14
Кстати про конференции и доклады: в нам в Нск едет @VagifAbilov (https://gdg-siberia.com/speakers)
Темы докладов вообще отсутствуют или где-то спрятаны?

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
? https://twitter.com/sforkmann/status/1024562547381489666
нормальные у них подвалы

Дед Пегас
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

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 боксить? Он же вроде всегда забоксенный должен быть.

Ivan
01.08.2018
14:16:34
o : obj

Я ж впрямую типы в аргументах прописал

Evgeniy
01.08.2018
14:17:08
Читаем внимательно.

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

Я ж впрямую типы в аргументах прописал
Ты же этот o взял и в лямбде переопределил,

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