Size: a a a

Scala User Group

2021 September 10

AT

Aleksei Teryokhin in Scala User Group
Вроде как и попросил, но как то очень пассивно агрессивно…
источник

AT

Aleksei Teryokhin in Scala User Group
Очень мало уважения… после прошлого раза еще не все со своим психотерапевтом разрешил, а тут снова
источник

AT

Aleksei Teryokhin in Scala User Group
Я до сих  проходя мимо вестерн ЮНИОН ловлю панические атаки.
источник

S

Simon in Scala User Group
Adding hierarchical type classification can result in programming communities that spend most their time talking about the "right" way to organise the universe of type classes, and experience surprisingly dogmatic discussions about that

https://github.com/fsharp/fslang-suggestions/issues/243#issuecomment-916079347

Как пнуть скалистов, не упоминая их
источник

WB

White Bear in Scala User Group
Паттерн матчинг дал, а адт не дал(
источник

Oℕ

Oleg ℕizhnik in Scala User Group
I don't want F# to be the kind of language where the most empowered person in the room is the category theorist.
источник

S

Simon in Scala User Group
Нужна кнопка "I'm on this picture and I don't like it"?
источник

EK

Evgenii Kuznetcov in Scala User Group
Лол
источник

λ

λoλcat in Scala User Group
Да там про хакелистов же
источник

WB

White Bear in Scala User Group
Которых 1.5 человека
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
А кетс эффект иерархии не подходят?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
ну не настолько много времени, конечно, они проводят как над размусоливанием AMP FTP SM
источник

AT

Aleksei Teryokhin in Scala User Group
Всего два года
источник

λ

λoλcat in Scala User Group
Кто-то даже бойкотирует мажорные релизы гхц, лишь бы FTP не принимать
источник
2021 September 12

D

Dmitry in Scala User Group
Привет, изучаю apache flink, напоролся на

https://github.com/apache/flink/tree/a90447813aee1c2d25becbef91432492bd3c06cb/flink-streaming-scala/src/main/scala/org/apache/flink/streaming/api/scala/extensions/package.scala#L25



so that we can work around the fact that overloaded methods taking functions as parameters can't accept partial functions as well


Собственно, ванильные методы там такие

https://github.com/apache/flink/tree/a90447813aee1c2d25becbef91432492bd3c06cb/flink-streaming-scala/src/main/scala/org/apache/flink/streaming/api/scala/DataStream.scala#L642

```
def map[R: TypeInformation](fun: T => R): DataStream[R]
def map[R: TypeInformation](mapper: MapFunction[T, R]): DataStream[R]
```

где MapFunction определен как джововский

```
@FunctionalInterface
public interface MapFunction<T, O> extends Function, Serializable {

   
O map(T value) throws Exception;
}

```

Можете объяснить плиз
1) почему partialfunction и перегрузка не женятся? Верно ли я понимаю, что partialfunction может быть быть сконверчен и в функцию и вызвать первую перегрузку, так и через SAM во вторую? Почему при этом первая не приоритетная, раз PartialFunction[-A, +B] extends (A) => B ?
2) При каких условиях там вообще возникает и не partialfunction при исползовании мэтчинга? я чет не понимаю, как с этим в репле поиграться и воспроизвести (чтобы сделать что-то анонимное работающее через case, надо указать целевой тип, что рубит на корню весь эксперимент), при использовании любого case-а комплиятор генерит partialfunction?
источник

S

Simon in Scala User Group
case еще не означает PartialFunction
Например тут partial fuction нет: https://scastie.scala-lang.org/z7KfkD0jQjiUlJoGDVr8eg
источник

AD

Apache DOG™ in Scala User Group
1) потому  что поле класса это либо значение, либо функция, и при этом для функции есть перегрузка. Тут нигде нет места для функции с неполной областью определения, по этому перегрузить ничего  не получается. Да и вообще называть разные малосвязанные вещи одним именем это моветон из квакающей и прочего опп, который только и делает что мешает компилю подсказывать какая там ошибка в типах.
2) любая partial function превращается в обычную продолжением её области определения
3) чего вы хотите добиться? чтобы юзать патмат вам в любом случае нужен  будет unapply object если вы делаете деструктуризацию.
источник

D

Dmitry in Scala User Group
Речь была не про перегрузку самой PartialFunction, а перегрузку методов, принимающих эту самую PartialFunction

> Чего вы хотите добиться?
Ну, я напоролся, что у меня не работал


val dataStream: DataStream[(String, String)] = ...
dataStream.map { case (key, value) => key }
,

а с предлагаемым выше костылем работает (через mapWith)

Я почитал код с докой и нихрена не понял, какую именно проблему их костыль решает и, собственно, почему решает

Вот попытался поиграться и воспроизвести проблему со своим "стримом", но у меня все работает 🤷

https://scastie.scala-lang.org/OO9f5nZ4RkSS3vLmNxicDA
источник
2021 September 13

D

Dmitry in Scala User Group
Привет, подскажите плиз, как попроще сделать  через chainig методы в одно выражение


val o: Option[String] = ...
Option(f(o.getOrElse(default)))


Типа

o.map(f).getOrElse(f(default))


но без дублирования f
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Скасти нада
источник