@Fsharp_chat

Страница 314 из 772
Алекс
18.09.2017
18:01:59
\o/ https://twitter.com/sforkmann/status/909815497734213632
Расскажите доступным языком что такое произошло?))

Evgeniy
18.09.2017
18:03:45
Расскажите доступным языком что такое произошло?))
Чувак, который в JetBrains работает над поддержкой F# в Rider, пишет код в FSharp.Compiler.Services

Алекс
18.09.2017
18:05:31
Чувак, который в JetBrains работает над поддержкой F# в Rider, пишет код в FSharp.Compiler.Services
Может наоборот?.. чувак который пишет код для компилера работает над поддержкой в rider?))

Google
Алекс
18.09.2017
18:05:43
В любом случае это хорошо)

Evgeniy
18.09.2017
18:17:10
Akkling (experimental F# API for Akka.NET) v0.7 released: https://www.nuget.org/packages/Akkling/

Roman
18.09.2017
18:17:19
Ого

Oleg
18.09.2017
18:19:11
Akkling (experimental F# API for Akka.NET) v0.7 released: https://www.nuget.org/packages/Akkling/
Это здорово, но под netcore ведь нет сборки? Может помочь человеку в портировании?

Evgeniy
18.09.2017
18:20:00
Это здорово, но под netcore ведь нет сборки? Может помочь человеку в портировании?
Я вижу FsPickler в зависимостях. А его портировать, как я понимаю, нетривиальная задача.

Oleg
18.09.2017
18:23:44
Я вижу FsPickler в зависимостях. А его портировать, как я понимаю, нетривиальная задача.
Мда... в Akka.FSharp тоже она используется. Поговорю с автором может быть можно есть идеи заменить FsPickler

Мне вообще Akka.Streams нужны, в Akkling они нормально завернуты

Evgeniy
18.09.2017
18:25:35
Мда... в Akka.FSharp тоже она используется. Поговорю с автором может быть можно есть идеи заменить FsPickler
Было бы неплохо заменить, конечно. https://github.com/mbraceproject/FsPickler/issues/83#issuecomment-330175730

Oleg
18.09.2017
18:40:26
Покопаюсь завтра https://www.reddit.com/r/dotnet/comments/64xdnx/binary_serialization_alternative_in_net_core/

Pawel
18.09.2017
20:03:01
Давно есть Yarn, который решает эти проблемы npm, а также проблему отсутствия .lock-файла для зависимостей
корень проблем yarn не решает. Он кеширует пакеты, которые есть у него в реестре, c остальными работает в точности как npm с node_modules - не детерминированно сваливает всё в большую локальную помойку. Потому что нужно чтобы была совместимость с npm. Большинство популярных либ не заморачиваются yarn версиями, ограничившись npm - yarn и так поймёт. appolo.js например

kana
18.09.2017
20:07:51
Только увидел твое сообщение про бовер. Почему-то был уверен, что он умер 2-3 года назад и все давно используют чисто вебпак с нпм, или аналоги для бандлинга, но именно с нпм

Pawel
18.09.2017
20:14:22
Как я это понимаю, Fable создает Babel AST из F# AST, которое ему дает F# Compiler Services, в результате в Fable не нужно реализовывать лексеры/парсеры и кодогенерацию (генерацию JS). Грамотный пример повторного использования
по такой логике можно сделать ядро линукса с зависимостью от user32.dll и назвать это грамотным примером повторного использования. Мне кажется такое никто использовать не станет

Roman
19.09.2017
09:25:37
Можно на F# побаловаться.

Google
Roman
19.09.2017
09:25:37
Официально открыта площадка http://aicups.ru! https://habrahabr.ru/company/mailru/blog/337942/ анонс первого чемпионата. Go к нам ;)

Проблема только в клиенте. C# клиент это java код транспличеный в C#.

Привет!

Aleksey
19.09.2017
14:24:59
Привет!

А тут людно, и активность не нулевая - это приятно :)

Vasily
19.09.2017
14:28:51
Отож

Friedrich
19.09.2017
14:29:18
Даже иногда код пишут!

Aleksey
19.09.2017
14:29:26
Это хорошо! Активное сообщество - это важно!

Friedrich
19.09.2017
14:30:51
Если что, мы базируемся вот тут: http://fsharplang.ru/ / https://github.com/fsharplang-ru У нас там есть переводы статей (изредка закидываем на хабр) и проекты.

Привет!

Yuri
19.09.2017
14:31:39
Привет!

Aleksey
19.09.2017
14:32:51
Я то сам - хаскелист (а ещё Elm и PureScript), так что сюда заглянул больше для интересу, чем из профессионального любопытства :) Но в плане common FP questions могу помочь, если что :)

Vasily
19.09.2017
14:34:23
За теорию категорий ответишь? :)

Aleksey
19.09.2017
14:35:13
Не, я практик больше. За теоркатом - в хаскелечатик или к идрисовцам :)

Монады знаю, да :)

Vasily
19.09.2017
14:37:15
Да концепция монад-то в целом более-менее понятна, как ее на практике применять

Aleksey
19.09.2017
14:39:14
Мы применяем постоянно :) Потому как по-другому у нас нельзя

Friedrich
19.09.2017
14:40:48
А вот в F# вполне можно припеваючи жить, не зная монад и всего такого.

Хотя некоторые заковыристые библиотеки без этого очень сложно понять.

(хотя некоторые библиотеки и с этим сложно понять)

Google
Vasily
19.09.2017
14:42:26
Некоторые библиотеки вообще не понять

Aleksey
19.09.2017
14:42:51
Дело не в припеваючи/неприпеваючи. Дело в том, носколько предсказуемо работает программа и насколько полно можно о ней рассуждать. Монады это позволяют. Как и любой другой способ контроля эффектов

Vlad
19.09.2017
14:43:09
Friedrich
19.09.2017
14:43:21
это ты про кастомные операторы и >=> ?
И про них в том числе, да.

Vlad
19.09.2017
14:43:43
рыбки читаемость портят для несведущих, это да

Aleksey
19.09.2017
14:44:13
встроенные в Perl регулярки читаемость портят для всех :)

А синтаксис разный бывает, не Алголом единым, как говорится

В ASCII маловато символов, поэтому и приходится "рыбок" делать

Friedrich
19.09.2017
14:45:51
Хе-хе, надо Дону предложить добавить юникодовые операторы :)

Vasily
19.09.2017
14:46:06
программирование на смайлах

Aleksey
19.09.2017
14:46:21
Можно просто лигатуры прикрутить :)

Friedrich
19.09.2017
14:46:28
Наделают всяких →> ¡ ¿

Можно просто лигатуры прикрутить :)
В этом же самый смак! Смешать лигатуры с настоящими юникодовыми операторами, и потом дружно в них путаться :)

Evgeniy
19.09.2017
14:47:12
Aleksey
19.09.2017
14:47:16
В Haskell есть юникодные операторы, но это как-то не прижилось - слишком рано добавили, тогда ещё многие в терминале сидели и не у всех отображалось :)

Aleksey
19.09.2017
14:47:44
Elm-овцы вон тоже лигатуры любят

Особенно для |> и <|

Только у Elm нету тайпклассов, поэтому полиморфизм ограничен (тем, что он - не ограниченный), а значит ограничиться небольшим кол-вом полиморфных операторов не выйдет...

Google
Aleksey
19.09.2017
14:51:19
Модули же есть, вроде?

Evgeniy
19.09.2017
14:51:30
Модули же есть, вроде?
Без функторов, не first-class.

Vasily
19.09.2017
14:51:58
О, кстати, разъясните за тайпклассы

Шо за зверь

Aleksey
19.09.2017
14:52:42
это когда ты пишешь class Eq a where (==) :: a -> a -> Bool

Это подразумевает, что любой тип, который принадлежит этому классу типов, умеет ==

Vasily
19.09.2017
14:53:11
А, тип вычисляется на основе сигнатур констрейнтов?

Aleksey
19.09.2017
14:53:19
Ага

Vasily
19.09.2017
14:53:44
Т.е. под него попадает любой тип, в котором реализовано ==

Aleksey
19.09.2017
14:53:50
Т.е. можно написать unique :: Eq a => [a] -> Bool

Vasily
19.09.2017
14:54:19
Строку не совсем понял

Aleksey
19.09.2017
14:54:56
Эта функция полиморфна - работает для любых списков [a] - но требует, чтобы элементы списка a поддерживали проверку на равество (Eq a)

Friedrich
19.09.2017
14:55:23
Т.е. под него попадает любой тип, в котором реализовано ==
Это чем-то похоже на наши SRTP, только у нас пока несколько ограниченней.

Если завезут SRTP, которые резолвятся по методам-расширениям, у нас станет так же мощно.

Тогда заживём!

Aleksey
19.09.2017
14:55:59
Это чем-то похоже на интерфейсы в ООП, только возможностей больше

Evgeniy
19.09.2017
14:56:00
Vasily Мне нравятся объяснения через реализацию. Вот, смотри, возможный концепт тайпклассов для F#. https://github.com/MattWindsor91/visualfsharp/blob/hackathon-vs/examples/fsconcepts.md

Vasily
19.09.2017
14:56:05
Ну будем ждать

Friedrich
19.09.2017
14:56:48
Vasily Мне нравятся объяснения через реализацию. Вот, смотри, возможный концепт тайпклассов для F#. https://github.com/MattWindsor91/visualfsharp/blob/hackathon-vs/examples/fsconcepts.md
Ага, отдельный бонус в том, что у нас уже есть несколько прототипов разной степени свежести и готовности, которые пробивают дорогу для тайпклассов.

Evgeniy
19.09.2017
14:57:27
Если завезут SRTP, которые резолвятся по методам-расширениям, у нас станет так же мощно.
Вариантов два на самом деле: 1. Тайпклассы можно будет соорудить на SRTP: https://github.com/Microsoft/visualfsharp/pull/3582 2. Тайпклассы появятся в C# вместе с соответствующими изменениями в CLR, а в F# навернут интероп.

Google
Friedrich
19.09.2017
14:57:58
Не факт, что в CLR в итоге всё-таки потянут изменения. Могут решить там локально у себя в C#.

Сам понимаешь, разговоры идут разные, и прототипы даже для C# тоже есть разные.

Evgeniy
19.09.2017
14:58:44
Не факт, что в CLR в итоге всё-таки потянут изменения. Могут решить там локально у себя в C#.
Default interfaces показывают, что они настроены решительно в отношении изменений в CLR.

Friedrich
19.09.2017
14:58:45
Раньше Мэдс говорил, что изменений в CLR не будет, а сейчас вот говорит что будут. Это не окончательно всё.

Aleksey
19.09.2017
14:59:14
окэмловы (точнее SML-евы) модули что-то похожее позволяют выразить - завязываемся на сигнатуру модуля и имеем нужное поведение и при этом полиморфизм

Friedrich
19.09.2017
15:00:17
Default interfaces показывают, что они настроены решительно в отношении изменений в CLR.
Начиная примерно с Roslyn (т.е. с C# 6) в каждую версию C# обещают добавить фичи, которые потребуют минорных изменений CLR. И каждый раз этих изменений не вносят. Я не исключаю, что в этот раз получится так же. Оцениваю вероятность, что C# 8 будет работать только на CLR 5, ниже 50%.

Ну и не забывай про F#. Мне кажется, ты забываешь про F# (иронично, а?)

Vasily
19.09.2017
15:01:23
Ну в F# в целом можно написать свои тайп-классы, используя констрейнты, по идее

Vasily
19.09.2017
15:01:31
Даже в текущей реализации

Friedrich
19.09.2017
15:01:38
F# 5 (?) тоже должен будет как-то работать на предыдущих рантаймах. Если у нас будет core-фича, которая опирается на изменения CLR, то вообще нифига непонятно, что будет с нашими инициативами на Mono, на .NET Native, на всём вот этом.

Vasily
19.09.2017
15:02:12
Это не совсем то.
А в чем отличия?

Evgeniy
19.09.2017
15:02:15
Даже в текущей реализации
Смотри, есть вот такая штука. https://github.com/gusty/FSharpPlus

Aleksey
19.09.2017
15:02:35
Простой ограниченный параметрический полиморфизм можно накостылять разными способами. Но этого мало

Evgeniy
19.09.2017
15:02:45
А в чем отличия?
Ты можешь это делать только для своего кода. У тебя не получится расширить чужие типы, без доступа к их реализации и перекомпиляции.

В этом же суть тайпклассов.

Vasily
19.09.2017
15:03:17
Они же имплиситы, шоле?

Friedrich
19.09.2017
15:03:22
Ну в F# в целом можно написать свои тайп-классы, используя констрейнты, по идее
Неа, нельзя. Есть существенные ограничения. Тайпкласс я могу реализовать для чужого типа. Например, для System.Int32. Систему из констрейнтов я не смогу реализовать для чужого типа. Потому что SRTP «не видят» методов раширения, которые я в чужие типы добавляю.

Vasily
19.09.2017
15:03:54
Тогда я недопонимаю, что же все таки такое тайпклассы

Friedrich
19.09.2017
15:03:56
Ну, это сегодня такая ситуация. Есть прототипы, которые грозятся это поменять. Если всё сложится очень хорошо, то, может, будет даже в 4.2.

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