Size: a a a

2021 May 30

p

polunin.ai in rust_offtopic
Не пробовать ФП
источник

p

polunin.ai in rust_offtopic
А то засосет и не дай бог геем скалистом станешь.
источник

А⚙

Антон ⚙️ in rust_offtopic
Ты тут видишь одноглазых?
источник

SS

Steel Sword in rust_offtopic
Аргумент уровень проповеди попов типа "не спорьте с атеистами, они вас с истины собьют"
источник

DS

Doge Shibu in rust_offtopic
И да, селф типы а-ля раст в скале не имеют смысла вообще, потому что там тайпклассы энкодятся, а-ля хаскель, с явным дженерик аргументом для типа
источник

ID

Iv@n Dereviankin in rust_offtopic
Зато безглазых полно
источник

а

а это кто in rust_offtopic
Если трейты енкодятся как в хаскеле, получается this в методе уже не используют, а передают объект внутрь явно?
источник

A

Aleksander in rust_offtopic
Можешь попробовать сначала Хаскель. Если не потянешь, то тогда Скалу (typelevel stack).
источник

А⚙

Антон ⚙️ in rust_offtopic
Напомни, пожалуйста, как в Haskell выглядит Ord?
источник

DS

Doge Shibu in rust_offtopic
Да, именно.

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

а

а это кто in rust_offtopic
Класс
источник

DS

Doge Shibu in rust_offtopic
class Eq a => Ord a wherr
 compare :: a -> a -> Ordering
источник

DS

Doge Shibu in rust_offtopic
В скала 3 это всё автоматом делается:

trait SemiGroup[T]:
 extension (x: T) def combine (y: T): T

trait Monoid[T] extends SemiGroup[T]:
 def unit: T
источник

DS

Doge Shibu in rust_offtopic
Через ключевое слово extension
источник

А⚙

Антон ⚙️ in rust_offtopic
А, то есть это скорее не "a удовлетворяет ограничению Ord", а "в функцию передаётся словарь функций Ord, параметризованный a"
источник

А⚙

Антон ⚙️ in rust_offtopic
А зачем там в итоге def?
источник

H

Hirrolot in rust_offtopic
+
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
4000 это не высокие
источник

DS

Doge Shibu in rust_offtopic
Потому что extension может в себя включать сразу несколько методов и там есть форма такая как выше под один метод и по сути она же под несколько:

extension [T](xs: List[T])(using Ordering[T])
 def smallest(n: Int): List[T] = xs.sorted.take(n)
 def smallestIndices(n: Int): List[Int] =
   val limit = smallest(n).max
   xs.zipWithIndex.collect { case (x, i) if x <= limit => i }
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Ну вот слышал слухи но все они не верны)
источник