Size: a a a

Scala User Group

2021 August 25

S

Simon in Scala User Group
позволяет внутри A
источник

Oℕ

Oleg ℕizhnik in Scala User Group
def toBase : Base = self
источник

SS

Sergiy Shatunov in Scala User Group
я вот немного не понял, subtyping это включение именно данных или к интерфейсам тоже относится? или и то и то?
источник

НМ

Никита Мязин... in Scala User Group
так это же фича self-тайпинга, а не странность языка
источник

Oℕ

Oleg ℕizhnik in Scala User Group
нельзя
источник

AS

Artem Sokolov in Scala User Group
не уверен что понял вопрос, это отношение подтипа которое есть в языке.
то что в скале в дженериках выглядит как A <: B
один из способов задания - это наследование -A extends B
другой это варивантность. например type C = List[A], type D = List[B], тк лист ковариантный у нас получаетися отношение подтипа  C <: D
навскидку не помню есть ли в скале еще способы задания такого отношения
источник

AS

Artem Sokolov in Scala User Group
а ну например Nothing является подтипом любого типа (без наследования)
также как Null для всех AnyRef
И наоборот Any неявно надтип для всех
источник

SS

Sergiy Shatunov in Scala User Group
напоминает иерархию классов типов из haskell
источник

AS

Artem Sokolov in Scala User Group
но вот в хаскеле же как раз нет сабтайпинга)
источник

AS

Artem Sokolov in Scala User Group
между TC по крайней мере
если я ничего не путаю
источник

SS

Sergiy Shatunov in Scala User Group
мой основной инструмент js, похоже там явление сабтайпинга мало применимо, потому я о нём не знаю
источник

AS

Artem Sokolov in Scala User Group
ну в js вообще с типами все очень... сложно. в том палане чтобы как-то получать пользу от теории типов. но есть же flow, там наверное есть понятие сабтайпинга
но вообще этого не знает 90% джавистов, да я думаю и большинство скалистов не знают (50+%, учитывая что большая часть это вчерашние джависты, да еще и на каком-нибудь спарке пишут) .
потому что часто по гайдам научились что можно унаследовать и подставлять наследника на место супертипа, и что если есть плюсик в дженерике, то тоже самое можно и с дженерифицированным классом делать
источник

SS

Sergiy Shatunov in Scala User Group
в ES6 оператор instanceof можно перегружать, теперь типизация стала ещё более "утиной"
источник

WB

White Bear in Scala User Group
похоже на coerce для ньютайпов
источник

АК

Анатолий Кот... in Scala User Group
та есть же, к примеру forall a . a <: Int, если сабтайпинг понимать как возможность использовать более "общий" тип вместо более конкретного
источник

SS

Sergiy Shatunov in Scala User Group
хаскелевские классы типов более похожи на интерфейсы в других языках, например golang
источник

Oℕ

Oleg ℕizhnik in Scala User Group
нельзя понимать сабтайпинг так, если я правильно помню, предложение ввести отношение субтайпинга и вариантность для констрейтов было, но было отклонено
@kai_neko конкретнее расскажет
источник

SS

Sergiy Shatunov in Scala User Group
потому и спросил: это относится к данным или к интерфейсам?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
это относится к типам
источник

Oℕ

Oleg ℕizhnik in Scala User Group
разделения на "данные" и "интерфейсы" на уровне языка нет
источник