
Akhmed
01.03.2017
22:07:28
ну тут я не могу уверенно утверждать так как абсолютно ничего серьезного не делал на Scala

Arseniy
01.03.2017
22:08:16

Akhmed
01.03.2017
22:09:02
что за f* ? это такой стеб над F# ?

Arseniy
01.03.2017
22:09:41
это теорем прувер. типо агды или кока. только написан на F# и в качестре решалки использует z3

Google

Akhmed
01.03.2017
22:10:26
любой разработчик низкого скила может написать код который ничего не делает на любом языке и гордиться этим
у меня был студент который гордился методом в 1000 строк на C#
и он гордился что он смог написать такой сложный метод

Roman
01.03.2017
22:11:10

Akhmed
01.03.2017
22:11:15
я сначала не понял что он гордится - думал жалуется что он такой говнокодер и мол говорю "не переживай, научишься кодить с практикой"
он удивился - мол типа а что он разве не умеет? Он же осилил такой сложный код в 1000 строк только в одном методе
когда показал что после рефакторинга этот объем уменьшился до 300 сильно удивился
и стал намного проще и читабельнее и понятнее по сравнению с тем что было
а F# практически всегда выдает более простое и элегантное решение нежели C#

Женя Зэ
01.03.2017
22:15:36
Так скала конкурент фшарпу или они о разном?

Akhmed
01.03.2017
22:16:15
Они такие же конкуренты как C# и Java
кто живет на C# стеке вряд ли когда нибудь пойдет на Java стек
и наоборот

Google

Женя Зэ
01.03.2017
22:16:59
Т.е. конкуренты, ок

Akhmed
01.03.2017
22:17:19
ну я в этом сильно сомневаюсь

Arseniy
01.03.2017
22:17:24

Akhmed
01.03.2017
22:17:35
вот C# и Java действительно конкуренты
а вот F# и Scala как гораздо менее популярные языки по сравнению со своими старшими братьями не могут быть конкурентами в принципе
т.е. кто пишут на Java никогда не возьмут F#

Женя Зэ
01.03.2017
22:18:29

Akhmed
01.03.2017
22:18:30
точно так же как если у нас UI на C# то для логики мы никогда не возьмем Scala

Женя Зэ
01.03.2017
22:18:46
У меня новый проект
Я выбираю стэк

Akhmed
01.03.2017
22:19:22
не ну тогда можно сказать что любой функциональный язык является конкурентом
почему не тот же Clojure ?
или тот же Haskell ?
с такой точки зрения все конкуренты

Женя Зэ
01.03.2017
22:20:38
Хаскелл вряд ли...

Arseniy
01.03.2017
22:20:48

Женя Зэ
01.03.2017
22:21:36
На дот нете и джвм у меня будет возможность миксовать функциональный стиль с ооп если понадобится
Хаскель слишком чистый

Akhmed
01.03.2017
22:22:08
миксовать между собой F# и C# проще нежели Java со Scala

Google

Женя Зэ
01.03.2017
22:22:52
А скала изначально не чистая функциональщина
Как бы ты уже на уровне скалы можешь отъехать если надо
Я просто пытаюсь спор поддержать
Не фанат джвм

Akhmed
01.03.2017
22:23:50
так и F# может все что может C#
F# точно так же как и C# является мультипарадигменным языком
многие новички F# думают что они умеют писать на F# только потому что они придя на F# пишут абсолютно так же как писали на C#

Arseniy
01.03.2017
22:25:45
по-моему, это всё ерунда. миксовать-не миксовать.
тут надо идти от потребностей. нужна база данных - какие есть либы.
нужен фронтенд? какие есть веб-фреймворки.
сериализация там. акторы или что еще.

Женя Зэ
01.03.2017
22:26:38

Akhmed
01.03.2017
22:26:54
http://www.scala-lang.org/old/faq/4.html#4n263

Arseniy
01.03.2017
22:27:43

Akhmed
01.03.2017
22:27:46
т.е. ВСЕ что можно использовать для C# точно так же можно использовать и для F#

Женя Зэ
01.03.2017
22:28:15
Это потому что ЦЛР изначально пилили независимым от языков
Так?

Arseniy
01.03.2017
22:29:45

Akhmed
01.03.2017
22:30:43
Насколько я знаю с совместимостью Java и Scala Далеко не все так гладко
вот уже кидал выше:

Google

Akhmed
01.03.2017
22:30:51
http://www.scala-lang.org/old/faq/4.html#4n263

Женя Зэ
01.03.2017
22:33:01
Крч мы приходим к тому что вин дотнэта в изначальном дизайне ЦЛР

Arseniy
01.03.2017
22:34:15
да всё у скалы и джавы нормально. нету тут никакого вина, 1 в 1 всё)

Akhmed
01.03.2017
22:34:30
можно спросить у скиловых Scala разработчиков
ну по крайне мере вот подобных болезней нет:
Can I compile Scala code into Java source (for example, so I can use GWT)?
Not at the moment, although there is a project underway to provide this functionality.
Вы можете прямо сейчас у себя скомпилировать F# и декомпилировать в C# без проблем
собственно я часто это делал что бы лучше понять особенности работы F#

Женя Зэ
01.03.2017
22:37:38
Закрепляем, вин дотнета это архитектура ЦЛР!

Roman
01.03.2017
22:38:44

Igor
01.03.2017
22:38:57
можно спросить у скиловых Scala разработчиков
Насколько я знаю основная проблема scala то что у нее свои коллекции не совместимые с java и приходится перегонять данные.
(в Kotlin таких проблем нет тк они юзатю java коллекции + 100500 своих extension methods для них).

Akhmed
01.03.2017
22:40:00
ну я с котлин тоже не работал активно но мне он реально понравился. По крайне мере после C# переходить на котлин заметно приятнее нежели на Java

Arseniy
01.03.2017
22:40:19
да блин, использовать скалу из джавы без врапперов нельзя. с фишарпом аналогичная история. хочешь фишарповые либы из сишарпа - врапперы.

Akhmed
01.03.2017
22:41:08
одно дело когда тебя обязывают использовать враппер без вариантов
другое дело когда все типы из коробки совместимы абсолютно и ты для красоты дизайна приложения сам решаешь сделать враппер
любые функции объявленные в F# доступен в C# как статичные методы статичных классов
Вот Роман лучше расскажет как профи F#
сейчас не поленился и сделал пример
одна строчка кода на F#
type Product = Book of int | Album of string

Google

Akhmed
01.03.2017
22:49:29
декомпилировался на C# в такой ад:
http://i.imgur.com/9SfTa0W.png

Arseniy
01.03.2017
22:53:17
это всё известно. вопрос в том, что на практике. является интероп между скалой и джавой шоустопером? нет. есть плей, есть акка, спарк - всё это используется из джавы без всяких проблем. в тоже время, если мы берем какую-то полезную либу на F#, то у нее есть враппер для сишарпа, например http://nessos.github.io/Streams/

Igor
01.03.2017
22:56:29
Даже в "разборе полетов" упоминали http://razbor-poletov.com/2016/02/episode-104.html
Барух до сих пор про это java-чате (pro.jvm) "дискутирует".


Arseniy
01.03.2017
23:00:38
ну я это иначе понял. у тайпсейфа была цель - продвижение скалы. они понаписали каких-то продуктов и поняли, что лучше продвигать продукты, чем язык. они сменили название, и продолжили делать то, что делали. Апи для акки и спарка они пилили и раньше, пилят и сейчас, что было написано на скале, так и развивается на скале.

Igor
01.03.2017
23:02:36

Vasily
02.03.2017
05:35:17
На самом деле у f# интероп с c#-тот еще головняк. Особенно сценарий, когда надо из c# либу вызывать

Roman
02.03.2017
10:00:00

Vasily
02.03.2017
10:18:30
Ну как обычно
1. Прокидывание и вызов делегата
2. Преобразование типов
Приходится что-то вроде такого писать : let getFunc (func:Func<'a,'b>)= fun x-> func.Invoke(x)

Arseniy
02.03.2017
22:30:02
https://twitter.com/VisualFSharp/status/837375739729043456

GNU/Patchouli
03.03.2017
16:58:38
Хаскель слишком чистый
Пожалуйста, есть крупные расширения - Haskell++ и O'Haskell, которые привносят полноценное ООП в Хаскелл.

Igor
03.03.2017
17:09:59

GNU/Patchouli
03.03.2017
17:39:20

Arseniy
06.03.2017
13:30:08
https://eiriktsarpalis.wordpress.com/2017/03/06/f-and-purity/