@Fsharp_chat

Страница 555 из 772
Vasily
16.04.2018
12:53:33
Я просто хочу странного

Хочется дополнительного слоя абстракции над пропертями по аналогии с ? <- операторами, но со строгой проверкой типов

Vlad
16.04.2018
12:56:31
Google
Vasily
16.04.2018
12:56:50
Evgeniy
16.04.2018
12:57:03
Это не всегда возможно
Давай на примерах тогда.

Я на словах очень плохо понимаю.

Vasily
16.04.2018
12:58:54
Ну смотри

Есть условный билдер

По факту список, какое свойство у объекта какой функции чтения соответствует

Дык вот

Хочется по идее нотации 't->'n где t тип, 'n свойство

Т.е. задавать функции геттеров сеттеров в общем виде, без доступа к инстансу объекта

Условно , если тип 't имеет свойство A, но не имеет свойство B, то условно <'t>?A должно скомпилиться, а <'t>B нет

<'t>?B

Все обозначения, естественно, условны

В c# я это могу решить конструированием лямбды на проперти

Google
Vasily
16.04.2018
13:08:12
Точнее Linq expression

Вопрос, как это сделать в f#

Daniel
16.04.2018
13:11:30
Если я правильно, понимаю, то нужно что-то вроде Expr<A,B> foo = (a) => a.b?

Vasily
16.04.2018
13:11:48
Угу

Причем со строгими констрейнтами

Daniel
16.04.2018
13:12:21
квотейшен же <@ fun a -> a.b @>

а, прочитал выше про DU

Vasily
16.04.2018
13:14:24
Ну квотейшн возможен, конечно

Daniel
16.04.2018
13:14:35
можно в таком случае сделать у DU with и там добавить мембер с нужным значением

реализуюя его, видимо, через match

Vasily
16.04.2018
13:15:57
Квотейшн потом надо как-то вычислять, это раз, и скорее всего он будет untyped, это два

Мрак - в спеке вместо описания квотейшнов ссылка на мсдн...

Vasily
16.04.2018
13:18:46
Ну перед тем , как спросить, в это надо погрузиться

Нырнуть поглубже, так сказать

Daniel
16.04.2018
13:20:02
ну и да, почему Untyped?

Evgeniy
16.04.2018
13:20:25
Посмотри пункт 6.8

Daniel
16.04.2018
13:21:19
динамические операторы уж точно не вариант

Google
Vasily
16.04.2018
13:21:21
Спасибо, ща гляну

динамические операторы уж точно не вариант
Ну хочется условно строгой типизации, да

Хммм... начал смотреть на Гьялахорн. По виду очень крутая библиотека

Особенно элегантно там решена проблема code behind

Прям аж захотелось ее попробовать

Roman
16.04.2018
14:56:43
Привет!

Sergey
16.04.2018
15:36:46
5 минут как понеслось! https://channel9.msdn.com )

Vasily
16.04.2018
15:49:37
Чо там есть чо для ф шарпа?

Igor
16.04.2018
15:50:01
FsharpConf с леночкой ?. Можно наверное передать привет в прямой эфир от f#-russia.

Klei
16.04.2018
16:16:04
Оно же в записи будет?

Mykola
16.04.2018
16:26:27
Оно же в записи будет?
да. обещали. сейчас про Hopac рассказывают

Klei
16.04.2018
16:27:15
Ок. Что щас hopca видел, просто времени прямо сейчас смотреть нет.

Evgeniy
16.04.2018
17:11:15
Хехе, скоро до 1.0.0 доберутся, хехе. https://github.com/gusty/FSharpPlus/commit/1dd1c0b1a5617439c98ad90491922b1b31153458

https://twitter.com/mlusiak/status/985911274612645889

Они туда @terrajobst (.NET PM) притащили. Офигеть. :)

Слева от Лены.

Igor
16.04.2018
17:23:59
Я на вас надеялся ? (это был завуалированный призыв к действию)

Sergey
16.04.2018
17:24:54
Они туда @terrajobst (.NET PM) притащили. Офигеть. :)
затролили в твиттере после того слайда от Альфонзо на F# Exchange

Evgeniy
17.04.2018
06:27:38
https://github.com/Wkalmar/SokkerPlayersCrawler/pull/1

Google
Evgeniy
17.04.2018
06:29:11
Vasily ?

Летучая
17.04.2018
06:55:18
Привет!

Evgeniy
17.04.2018
07:06:15
Привет!
Привет, Рыба.

Artemy
17.04.2018
07:52:53
https://github.com/dotnet-websharper/mvu

Evgeniy
17.04.2018
07:57:06
https://github.com/dotnet-websharper/mvu
Выглядит неплохо.

Интересно, что разработчиков W# не видно на конференциях.

Не хайпят!

Artemy
17.04.2018
07:58:33
Возможно, не успевают ездить

Ну или просто считают, что ещё не время хайпить.))

Pavel
17.04.2018
08:02:41
Выглядит неплохо.
А мне не нравится темплейты. Получается view разбивается на две части: разметка и связывание разметки с моделью. Complexity + boilerplate

Artemy
17.04.2018
08:08:28
А как больше нравится?

Evgeniy
17.04.2018
08:08:42
Вот пример. http://try.websharper.com/snippet/loic.denuziere/0000Kc

?‍?
17.04.2018
08:17:50
Вопрос больше по Net части, если функция inline - она встраивается, и по идее она будет вырезаться (?) как отдельный метод из сборки компоновщиком и её, например, из рефлексии не вызвать в релизе?

Pavel
17.04.2018
08:27:22
Roman
17.04.2018
08:48:14
Много нас осталось?

Igor
17.04.2018
08:52:24
Напомните плиз есть ли в f# tail rec в каком либо виде?

Evgeniy
17.04.2018
08:53:11
Напомните плиз есть ли в f# tail rec в каком либо виде?
Есть. https://blogs.msdn.microsoft.com/fsharpteam/2011/07/08/tail-calls-in-f/

Google
Vasily
17.04.2018
08:54:01
Если вычисления до входа в следующий цикл рекурсии - это тейл рек, иначе - обычная рекурсия. Вроде так

Igor
17.04.2018
08:56:47
А проверять надо дизасемблером?

Sergey
17.04.2018
08:57:24
А проверять надо дизасемблером?
еще стоит понимать что компилятор будет стараться умничать, и если tail rec не очень сложный и понятный компилятору, то в декомпилированном коде будет просто цикл - и это нормально (это значит что tail)

?‍?
17.04.2018
09:16:21
не вырезается
Этот сайт не собирает в релиз. https://sharplab.io/#v2:DYLgZgzgPg9gDgUwHYAIDKBPCAXBBbAWACgBiASzBQCUBRAGRoEE0bjgFsUylhuEU8GACoBXOOwBMKAIYoARigC8xFCgAU0gDTyAlMRIJgEBGw5cefAcLHsAjPJQBjJSvVztjvaWQATCsTgAJ25sSgAiAFJGMPVBUXEEeykAZh0gA===

?‍?
17.04.2018
09:21:29
Ты говоришь про F# inline или атрибут AgressiveInlining (как его там)?
Я не знаю, замещаеся он на агрессив или свой механизм.

Friedrich
17.04.2018
09:21:44
Это два совершенно разных случая. У них ничего общего.

?‍?
17.04.2018
09:22:02
Но если например можно на C# агрессить геттеры/сеттеры, то у F# ошибки билда

Это два совершенно разных случая. У них ничего общего.
Вот мне и интересно, будут ли inline функции вырезаны в релизе?

Friedrich
17.04.2018
09:23:40
F# inline — это фича языка. Компилятор будет делать специализацию функции для всех случаев её использования. Исходная функция тоже будет, но, вроде бы, только в метаданных (в декомпиляторе ты её, возможно, не увидишь) — чтобы из других сборок юзать. Атрибут AgressiveInlining — это хинт для JIT. Соответственно, на выводе декомпилятора он вообще никак не отражается, а чтобы понять, сработал он или нет — надо читать дизасм.

F#-компилятор сам умеет много чего инлайнить в байткоде (без дополнительных хинтов, совсем самостоятельно). C#-компилятор так никогда не делает.

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