@Fsharp_chat

Страница 477 из 772
Fill
18.02.2018
17:18:06
Ну во-первых для некоммерческого использования райдер бесплатный, а индивидуальная подписка стоит порядка 8$ в месяц Во-вторых по существу F# у них не в приоритете и их понять можно
Эм, я разработчик. Пишу код для коммерческого использования, я же не в игрушки играю. Rider - IDE для .net, а не для C#. В любом случае, в бесплатном вскоде есть важная фича, которой нет в платной IDE. Я имею моральное право негодовать

Roman
18.02.2018
18:27:58
Привет!

Google
Roman
18.02.2018
22:14:02
Тут есть ф-ция getExpences Она явно работает с одним из подтипов(?) Debit. Почему мы не можем явно параметризовать таким подтипом ф-цию? Или можем, а я не знаю как?)

Adding Meaning to Primitive Types in fsharp | Demystify FP https://www.demystifyfp.com/fsharp/blog/adding-meaning-to-primitive-types-in-fsharp/

let rec getExpenses transactions = getExpenses' transactions [] and getExpenses' transactions expenses = match transactions with | [] -> expenses | x :: xs -> match x with | Debit expense -> getExpenses' xs (expense :: expenses) | _ -> getExpenses' xs expenses

type Transaction = | Credit of Income | Debit of Expense

let rec getSmth transactions type = getSmth' transactions [] and getSmth' transactions expenses type = match transactions with | [] -> expenses | x :: xs -> match x with | type expense -> getSmth' xs (expense :: expenses) | _ -> getSmth' xs expenses Как-то так и типизированно let debits = getSmth transactions Transaction.Debit

Aleksander
18.02.2018
22:40:30
let rec getSmth transactions type = getSmth' transactions [] and getSmth' transactions expenses type = match transactions with | [] -> expenses | x :: xs -> match x with | type expense -> getSmth' xs (expense :: expenses) | _ -> getSmth' xs expenses Как-то так и типизированно let debits = getSmth transactions Transaction.Debit
Вообще интересно, зачем писать 9 строчек кода с рекурсией и вложенными матчами вместо List.choose / filter .. Есть ли в этом какой-то тайный смысл? Так, имхо, было бы проще) let matchDebitTx tx = match tx with | Debit exp -> Some exp | _ -> None let getExpenses = transactions |> List.choose matchDebitTx

Vasily
19.02.2018
05:36:14
Можно по идее на генерик констрейнтах попробовать

Kirill
19.02.2018
05:38:59
На самом деле райдер почти бесплатен - его добавили в пакет R# Ultimate
нет, там отдельный пакет, более дорогой с ним

Bonart
19.02.2018
05:46:53
нет, там отдельный пакет, более дорогой с ним
Да ладно? https://www.jetbrains.com/store/?fromMenu#edition=commercial R# - 299, Rider - 349, R# Ultimate + Rider - 449. https://www.jetbrains.com/store/?fromMenu#edition=personal 129-139-179. R# Utimate отдельно нет. Т.е. хочешь с dotMemory и dotProfile - райдер будет в комплекте. Это позволяет с одной стороны выставить на райдер формально высокую цену а с другой - реально прожавать куда дешевле.

Вру, отдельно R# Ultimate взять можно. За 149. Таким образом райдер для индивидуального разработчика обойдется в 30 баксов, а корпоративная версия - в 50

Kirill
19.02.2018
05:50:44


цены на коммерческую

Google
Kirill
19.02.2018
05:53:31
Я покупаю R# года с тринадцатого, Ultimate у меня с самого начала, как появился, и мне никто Райдер не предлагает

Bonart
19.02.2018
06:22:52
50 баксов аднака, я уже исправил

Roman
19.02.2018
07:10:50
Там Кшиштов задал вопрос https://twitter.com/k_cieslak/status/965302450856095745 и я понял что еще мы как сообщество упустили. Нам нужны хорошие примеры использования f# бизнесом. И статьи на тему почему бизнесу стоит посмотреть на f#

Vasily
19.02.2018
07:21:42
На самом деле, для использования в том же тырпрайзе основных препятствий два:

1. Отсутствие Code style

2. Слабый тулчейн плюс интеллисенс. Ну и иногда тяжело понять, что не нравится компилятору

Kirill
19.02.2018
07:28:10
3. Перетаскивание всех удачных идей в C#

Vasily
19.02.2018
07:29:10
Ну это-то понятно, почему

Igor
19.02.2018
07:31:25
3. Перетаскивание всех удачных идей в C#
Имхо C# не удачные идеи перетаскивает, а любые хайповые - из-за этого у него уже “граматика” больше C++

Vasily
19.02.2018
07:32:03
Ну и еще одно - отсутствие внятных гайдлайнов по написанию больших проектов

Для ООП есть SOLID плюс куча паттернов

Vasily
19.02.2018
07:32:54
Для фп есть функциональные структуры данных и в общем-то все

Igor
19.02.2018
07:33:55
Для ООП есть SOLID плюс куча паттернов
http://www.yegor256.com/2017/03/28/solid.html Паттерны не нужны, когда есть функции, а солид… ну Егор все расписал))

Vasily
19.02.2018
07:35:00
Я немного про другое

ИМХО, разработка на f# том же предполагает в основном проектирование DSL

И дальнейшие операции в рамках этого DSL

Vasily
19.02.2018
07:36:01
В ООП как-то больше принят DDD

Bonart
19.02.2018
07:36:59
Имхо C# не удачные идеи перетаскивает, а любые хайповые - из-за этого у него уже “граматика” больше C++
В этом месте плюсисты долго и громко ржут. У шарпа по версиям все довольно-таки последовательно. 2 - генерики, 3 - LINQ, 4 - dynamic, 5 - async, 6 - сахар, 7 - еще сахар и оптимизация структур

Google
Aleksander
19.02.2018
07:37:02
Ну и еще одно - отсутствие внятных гайдлайнов по написанию больших проектов
Я тоже думал насчет этого, но в принципе а) никто не мешает использовать при необходимости те же подходы с F# (DI и т.п.) б) если писать модные микросервисы, то проблема уходит сама собой (точнее превращается в другую, уже независимую от ЯП :) )

Bonart
19.02.2018
07:37:33
В ООП как-то больше принят DDD
DDD - это то, о чем все говорят но никто не умеет :)

Igor
19.02.2018
07:39:41
В этом месте плюсисты долго и громко ржут. У шарпа по версиям все довольно-таки последовательно. 2 - генерики, 3 - LINQ, 4 - dynamic, 5 - async, 6 - сахар, 7 - еще сахар и оптимизация структур
Ржать то можно долго, факт остается фактом https://i.gyazo.com/cac11c8a889a2d7d765b755eecee2b52.png Linq это вообще пушка, из-за корявости языка, они встроили в него др язык ? (ходят слухи что планируют выпилить)

Vasily
19.02.2018
07:39:54
DSL - тоже то, о чем все говорят, но никто не умеет

Kirill
19.02.2018
07:40:32
DDD - даже если понимаешь - это извечный вопрос а как это сделать
согласен, но это не значит, что никто не умеет

Bonart
19.02.2018
07:41:57
> Ржать то можно долго, факт остается фактом Какой факт? Не вижу ни как описана грамматика, ни какого года плюсы, вообще картинка вместо пруфа

Kirill
19.02.2018
07:44:04
а что значит "size in lines" в этом контексте?

Igor
19.02.2018
07:44:46
size in lines и означает ?‍♀️

Bonart
19.02.2018
07:45:30
а что значит "size in lines" в этом контексте?
Значит что кто-то тезис заявил, а пруфов у него нет. Только "иди и посчитай"

Собственно маленький размер грамматики у скалы намекает

Igor
19.02.2018
07:47:02
У хаскеля еще меньше, это у диссонанс вызывает?

Bonart
19.02.2018
07:47:56
Про хаскель - не вызывает.

Vasily
19.02.2018
07:48:52
интересно на размер грамматики лиспа глянуть

Bonart
19.02.2018
07:48:55
Хотя опять-таки смотря какой хаскель, стандарт или конкретная версия GHC

Google
Aleksander
19.02.2018
07:48:56
https://github.com/antlr/grammars-v4

Скала и правда маленькая, C# с лексером и парсером и правда больше чем CPP

ну нет, не больше, но сравнимо

Kirill
19.02.2018
07:50:42
т.е. это не про конечную грамматику, а про правила?

Aleksander
19.02.2018
07:51:27
Но в C# лексере 1к строк это юникод

т.е. это не про конечную грамматику, а про правила?
Думаю это единственный адекватный способ сравнить размеры грамматик языков)

Kirill
19.02.2018
07:52:43
по количеству конструкций ещё часто сравнивают, что меня и смутило вначале

Siarhei
19.02.2018
07:53:15
что-то не все языки есть в этой репе

Bonart
19.02.2018
07:56:49
Шарп там шестой, скала хз какая и репа годичной давности

И примеров для скалы аж один хелловорлд

Siarhei
19.02.2018
07:58:04
vhdl 1713 Lins

nice

граматика урла и имейла - Это хорошо, это прям валидатор можно написать юзая antlr (если уже кто-то не сделал) :D

Aleksander
19.02.2018
08:01:00
Для себя я сделал выводы что cpp по прежнему самый сложный (не думаю что за год сложность языков увеличилась в разы), а грамматика для linq в C# занимает аж 40 строк (https://github.com/antlr/grammars-v4/blob/08e26b796df36f50629faea4c95042d08061fc0a/csharp/CSharpParser.g4#L301) Свои выводы делайте сами)

Anna
19.02.2018
08:01:07
Смотрю на заголовок чатика и недоумеваю ? Но за ссылку спасибо!

Vasily
19.02.2018
08:51:11
Она ж за денежку

Dmitry
19.02.2018
08:51:28
Она ж за денежку
Стоит своей денюжки

Google
Vasily
19.02.2018
08:51:57
Хммм

Надо подумать о покупке тогда

Dmitry
19.02.2018
08:54:10
Надо подумать о покупке тогда
Начало весьма базовое (хотя про ДДД интересные детали вспоминаются), последняя треть прям огонь

Tony
19.02.2018
08:54:39
Надо подумать о покупке тогда
https://www.youtube.com/watch?v=Up7LcbGZFuo тут превью есть

Vasily
19.02.2018
08:56:36
Влашин в целом крут

Igor
19.02.2018
09:00:35
Слышал, у него новый доклад был про “композицию” или это из старого?

Vasily
19.02.2018
09:00:50
Ну это из старого, но доклад новый

Там про рельсы

Igor
19.02.2018
09:03:54
А rail-way-programming я видел, думал что-то новенькое

Roman
19.02.2018
09:10:09
Релиз первой беты кросс-платформенного XAML UI-тулкита Avalonia / Хабрахабр https://habrahabr.ru/post/349394/

Раньше окно полностью перерисовывалось при каждом изменении. Этот подход прост и надежен, но крайне неэффективен. Вместо него был реализованDeferredRenderer, который преобразует вызовы нашего API отрисовки в граф сцены окна. Отдельный поток ищет в графе измененные участки и перерисовывает только их. Помимо снятия нагрузки с UI-потока это позволяет добавлять оптимизации, выделяя части окна в кешируемые слои. Виртуал дом в xaml)

Vasily
19.02.2018
09:18:33
Ну типа кроссплатформенный UI

Roman
19.02.2018
09:19:44
а зачем этот тулкит?
Ребята тут делали демку с f# dsl на computation expressions, выглядело красиво

Kirill
19.02.2018
09:21:09
готовил в боевом проекте DDD на C# если есть вопросы, задавайте :)

Vasily
19.02.2018
09:21:26
И какого размера боевой проект?

Kirill
19.02.2018
09:22:13
И какого размера боевой проект?
сложно сказать, в чём измерять?

Диёр
19.02.2018
09:22:52
Релиз первой беты кросс-платформенного XAML UI-тулкита Avalonia / Хабрахабр https://habrahabr.ru/post/349394/
Емнип проект авалон в майкрософте существовал ещё со времен винды хр

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