Size: a a a

Scala User Group

2021 January 27

AS

Alex Sh in Scala User Group
Надо оба потеребить 🙂
источник

Oℕ

Oleg ℕizhnik in Scala User Group
спасибо!, а тебе @combot  не спасибо
источник

K

Kirill in Scala User Group
Oleg ℕizhnik
киньте скасти
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Да, к сожалению, так не выйдет
источник

S

Simon in Scala User Group
забавно, но таки да: class Node[T: Ordering](left: SkewHeap[T] = new Empty[T]) это class Node[T](left: SkewHeap[T] = new Empty[T])(implicit ev: Ordering[T]). И использовать в первом блоке параметров параметры из второго не вйдет
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Причина не самая тривиальная. Ordering как аргумент идёт после основных аргументов и формально не может резолвиться до них
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Simon
забавно, но таки да: class Node[T: Ordering](left: SkewHeap[T] = new Empty[T]) это class Node[T](left: SkewHeap[T] = new Empty[T])(implicit ev: Ordering[T]). И использовать в первом блоке параметров параметры из второго не вйдет
_ + _
источник

K

Kirill in Scala User Group
А как тогда писать кучи?
источник

S

Simon in Scala User Group
Kirill
А как тогда писать кучи?
Например так:
class Node[T: Ordering](left: SkewHeap[T]) ...
object Node {
 def apply[T: Ordering](left: Option[SkewHeap[T]]) = new Node[T](left.getOrElse(new Empty[T]))
}
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Kirill
А как тогда писать кучи?
могу предложить такой вариант https://scastie.scala-lang.org/Odomontois/DWciLKzRT1OgRdQi3UuKpQ/8
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Получается грязноватый синтаксис Node[T].of(..., left = ...)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
В качестве альтернативы - вообще не хранить Ordering в классах
источник

Oℕ

Oleg ℕizhnik in Scala User Group
А требовать во время операций
источник

Oℕ

Oleg ℕizhnik in Scala User Group
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Там чуть чуть пофиксил ещё
источник

λ

λoλcat in Scala User Group
Oleg ℕizhnik
А требовать во время операций
Уже обсуждали сколько-то лет назад
источник

λ

λoλcat in Scala User Group
Опасно
источник

K

Kirill in Scala User Group
Oleg ℕizhnik
Там чуть чуть пофиксил ещё
Спасибо. Я бы не догадался так сделать.

(пока что я сделал себе apply с аргументами по умолчанию в object Node; пока что не понял, почему оно там не ругается)

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

Oℕ

Oleg ℕizhnik in Scala User Group
Kirill
Спасибо. Я бы не догадался так сделать.

(пока что я сделал себе apply с аргументами по умолчанию в object Node; пока что не понял, почему оно там не ругается)

Думаю, требовать компоратор во время операции - это как-то не очень. (я не исключаю возможности того, что я что-то неправильно себе представляю) Просто мне кажется, что кучи с разными компораторами - это разные типы.
Это нормально
источник

K

Kirill in Scala User Group
А в реальных проектах, если нужна персистентная очередь, пишут свою или используют scala.collection.immutable.Queue?
источник