@Fsharp_chat

Страница 605 из 772
Evgeniy
17.06.2018
14:12:03
Как вообще тру-фшарперы относятся к кастомным операторам?
https://docs.microsoft.com/en-us/dotnet/fsharp/style-guide/component-design-guidelines#avoid-defining-custom-symbolic-operators

Andrew
17.06.2018
14:14:12
https://docs.microsoft.com/en-us/dotnet/fsharp/style-guide/component-design-guidelines#avoid-defining-custom-symbolic-operators
Полностью согласен, функции с нормальными именами практически всегда лучше

А то смотришь на код типа “a >>=+> b” и даже не знаешь, как это прочитать

Evgeniy
17.06.2018
14:15:56
HOPAC

Google
Ayrat
17.06.2018
14:25:56
В гопаке есть упоротые операторы, но часто употребимые как в хаскеле. >>= >>-, Channel give похож на go *<-

Упоротые это всякие Alt. Prepare Job with nack

Evgeniy
17.06.2018
14:29:01
Непонятно, зачем использовать такие операторы, когда есть функции.

Ayrat
17.06.2018
14:30:23
Оператор заменяет сразу две сущности |> + функцию (Job.map или Job.bind)

Ayrat
17.06.2018
14:30:46
Зачем нам оператор + если есть функция sum?

A |> sum B Норм же? Не то что эти ваши операторы А + В

Evgeniy
17.06.2018
14:32:15
Зачем нам оператор + если есть функция sum?
Это плохой пример, как работает (+) мы знаем со школы.

Ayrat
17.06.2018
14:32:45
Монадические комбинаторы в школе не проходят, но мы ж не в школе

Evgeniy
17.06.2018
14:33:52
Все верно, а еще их нет в стандартной библиотеке.

Andrew
17.06.2018
14:33:54
Evgeniy
17.06.2018
14:34:34
Все верно, а еще их нет в стандартной библиотеке.
Это значит, что читатель, знающий F#, может быть с ними не знаком, у него может не быть интуиции в их отношении.

Google
Andrew
17.06.2018
14:34:38
Если компилятор позволяет любую функцию использовать как экстеншен метод

Ayrat
17.06.2018
14:34:57
В стандартной либе нет map в комп экспрешнах. Им тоже нельзя пользоваться?

Evgeniy
17.06.2018
14:36:09
Что делает map понятно из названия, что делает >>- уже не так просто понять при чтении. ;)

Ayrat
17.06.2018
14:36:39
а что это значит? >>= >>-
Это монадический bind и map обыкновенный

Andrew
17.06.2018
14:37:07
В стандартной либе нет map в комп экспрешнах. Им тоже нельзя пользоваться?
Но там есть отдельно map и выражения, то есть тут не новая сущность, а сочетание уже знакомого

Ayrat
17.06.2018
14:38:46
Спорим ниочом) в Fake есть оператор </> который заменяет Path.Combine. Очевидно что он делает из интеллисенса.

Короче, операторы это хорошо. Их понимание вопрос второй. Вы же поняли что :: или @ делает.

Вот к >>- или >>= можно привыкнуть так же быстро

Тем более они общеупотребимые

Evgeniy
17.06.2018
14:40:25
Vlad
17.06.2018
14:44:55
Andrew
17.06.2018
14:50:40
Тем более они общеупотребимые
По-моему «общеупотребимость» субъективна

Плюс или минус еще можно назвать общеупотребимыми, с натяжкой можно считать таковым бинарный сдвиг, но даже про оператор собаки я не представляю что он делает

Daniel
17.06.2018
15:04:43
Я так думаю, у всех присутствующих (кто учился в техничкском вузе, конечно) были хотя-бы вышмат и матанализ. В рамках этих дисциплин вводилось немало символьных операций. Их тоже словами заменить? Когда постоянно используешь какую-либо нотацию - она быстро запоминается

Уж точно |+| лучше читается, чем SemigroupK.combine

Лёгкость освоения != удобство ежедневного использовпнияш

Симвоьные операторы в dsl благо

Pavel
17.06.2018
15:06:32
вот только в другой библиотеке |+| может означать все что угодно

Daniel
17.06.2018
15:07:04
Ну и что с того?

Google
Daniel
17.06.2018
15:07:20
combine тоже

Pavel
17.06.2018
15:07:37
держать в уме 100 и один вариант использования кастомного оператора?

combine тоже
это уж как автор пожелает. вовсе необязательно

Daniel
17.06.2018
15:09:08
Pavel
17.06.2018
15:09:32
эт япро оператор имелл ввиду

combine то хоть какойто контекст подразумевает

Ayrat
17.06.2018
15:11:27
Холивар за операторы. Нормас

Andrew
17.06.2018
15:12:24
Уж точно |+| лучше читается, чем SemigroupK.combine
Читается точно не лучше. Возможно легче пишется, но экономия нажатий кнопок должна быть на уровне тулинга а не языка, т.е. студия должна дать ввести «SK.C» и сама развернуть в то что надо

Ayrat
17.06.2018
15:13:26
Джависты тоже гордятся что они геттеры и сеттеры одной кнопкой разворачивают в простыню

Andrew
17.06.2018
15:14:31
У джавистов одна крайность, у любителей операторов другая - ищем золотую середину

Evgeniy
17.06.2018
15:14:50
Я так думаю, у всех присутствующих (кто учился в техничкском вузе, конечно) были хотя-бы вышмат и матанализ. В рамках этих дисциплин вводилось немало символьных операций. Их тоже словами заменить? Когда постоянно используешь какую-либо нотацию - она быстро запоминается
Да, несколько лет тренировок, но порой мне все равно непросто читать математические выражения. Приходится брать листок, карандаш, переписывать и внимательно следить за последовательностью значков. ?‍♂️

Проблема в том, что в голове нужно держать довольно много контекста, а тексты, где каждый знак важен, очень тяжело читать.

Pavel
17.06.2018
15:18:05
в общем для изращенцев есть такая штука https://marketplace.visualstudio.com/items?itemName=TaoLiu.MathSymbol

Igor
17.06.2018
15:37:44
Это монадический bind и map обыкновенный
Где же ты был, когда я про оператор для map спрашивал. Норм и лигатра для него есть ?

Igor
17.06.2018
15:40:40
Эх блин, он страшненький ?

Ayrat
17.06.2018
15:44:32
И по-моему компилятор в F# на него ругается

Не за компом сейчас, проверьте пожалуйста кто может

Mikhail
17.06.2018
15:46:39
А как относитесь к >=> в Giraffe?

Google
Igor
17.06.2018
15:48:47
А как относитесь к >=> в Giraffe?
А оно отличается от suave?

Ayrat
17.06.2018
15:49:27
Это кляйзли и там, и там вроде.

Mikhail
17.06.2018
15:49:31
А оно отличается от suave?
Тут вроде высказывают недовольство по поводу операторов кастомных. Вот и спрашиваю

Igor
17.06.2018
15:50:08
Тогда норм. Плохо что в жирафе task юзаются

Mikhail
17.06.2018
15:50:37
А чем таски плохи? Не по канону?

Igor
17.06.2018
15:56:25
Семантика у них другая, с функционально точки зрения они хуже (зато перформанс лучше, это да).

Ayrat
17.06.2018
16:01:36
Да, не комплируетя
А какую ошибку пишет? Зарезервированный оператор?

Igor
17.06.2018
16:03:10
error FS0035: This construct is deprecated: '$' is not permitted as a character inoperator names and is reserved for future use

А было у кого такое? Проект не собирается, хотя в коде ошибок нет. error FS0192 : internal error : primDestForallTy: not a forall type Гуглится только одна ишья на github f#, закрытая Д. Саймом (типа невоспроизводится).

Mariia
17.06.2018
16:12:49
let primDestForallTy g ty = ty |> stripTyEqns g |> (function TType_forall (tyvs, tau) -> (tyvs, tau) | _ -> failwith "primDestForallTy: not a forall type")

Roman
17.06.2018
16:14:12
Как вообще тру-фшарперы относятся к кастомным операторам?
Стараются не выносит в них api, а в рамках модуля можно как и что угодно)

Andrew
17.06.2018
16:25:03
Igor
17.06.2018
16:28:03
let primDestForallTy g ty = ty |> stripTyEqns g |> (function TType_forall (tyvs, tau) -> (tyvs, tau) | _ -> failwith "primDestForallTy: not a forall type")
let primDestForallTy g ty = ty |> stripTyEqns g |> (function | TType_forall (tyvs, tau) -> (tyvs, tau) | _ -> failwith "primDestForallTy: not a forall type") Так понятнее?

Evgeniy
17.06.2018
19:16:25
https://twitter.com/ben_a_adams/status/1008406784212656130

Vladimir
17.06.2018
19:38:49
интересно что такое mw

нашел - middleware =)

А вот ссылка https://www.techempower.com/benchmarks/#section=test&runid=bebca46e-899f-4958-8052-d5f5f5c81eb2&hw=ph&test=plaintext&l=qmx0ql

Evgeniy
18.06.2018
07:47:36
Привет.

Cute Guy
18.06.2018
07:47:55
Привет

Evgeniy
18.06.2018
07:48:19
Привет
Пишешь на F#?

Google
Cute Guy
18.06.2018
07:48:37
Хочу познать чудесный мир ФП. Пока просто смотрю

Evgeniy
18.06.2018
08:01:29
Хочу познать чудесный мир ФП. Пока просто смотрю
Ок, рекомендую начать с https://fsharpforfunandprofit.com/

Cute Guy
18.06.2018
08:01:56
Да, уже читаю) спасибо

Ayrat
18.06.2018
08:35:19
Давайте навалимся и проголосуем за подсветку операторов в райдере https://youtrack.jetbrains.com/issue/RIDER-16929#u=1529310658198

Dima
18.06.2018
08:38:57
Хочу познать чудесный мир ФП. Пока просто смотрю
все познается в сравнении! Не забудь заглянуть в мир лиспа - язык Clojure ;)

Cute Guy
18.06.2018
08:39:37
Evgeniy
18.06.2018
08:47:16
Dima По поводу F# и прода. ;) https://fsharp.org/testimonials/

Rustem
18.06.2018
09:22:12
это возможно решить на F# оптимальным способом?

#announcement #task_102 ? Задача 102: Минимальное кол-во операций (решение будет в понедельник) Дано натуральное число N. Вы можете выполнять след.операции над числом: вычитать 1, делить на 2 (если делится), делить на 3 (если делится). Необходимо найти наименьшее кол-во операций, ктр приведут заданное число к 1. Входные данные: N - натуральное число от 1 до 10^6 Вывод: число X - наименьшее кол-во операций, ктр приведут число N к 1. Пример: N = 9 Answer = 2 P.S. На след.неделе мы перенесем публикацию анонса, чтобы у вас было больше времени на решение задачи!



но не оптимальное

Anna
18.06.2018
09:27:08
Не функциональненько получается, зато за линию

Ayrat
18.06.2018
09:29:46
Числодробилки вообще делать на ФП бывает удобно, но крайне неоптимально. Мутабельность изо всех щелей, а ускорение в 90% случаев достигается через разбиение работы на X слайсов (где X кол-во ядер). Короче, там больше C++ какой-то тренируется чем F#

Artem
18.06.2018
10:11:21
Что за шрифт?

Rustem
18.06.2018
10:12:04

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