Исправление dimgel, (текущая версия) :
The difference between theory and practice is that in theory there’s no difference between theory and practice, but in practice there is.
Кстати, там где-то выше Аист упомянул даункасты в контексте type erasure – дык вот помню в каком проекте (lightweight ORM на скале с компиляцией scala-функций в хранимки – всё на макросах, разумеется), но убей бог не помню как и с какого боку, но я вляпывался в даункасты ровно из-за type erasure. Возможно, при трансформациях AST.
О, кстати! Pattern matching над типами – тоже по сути instanceof + даункасты. И используется вовсю и повсеместно, далеко не только при преобразованиях AST.
result match {
case OK(data) => { ... }
case Error(message) => { ... }
}
Исходная версия dimgel, :
The difference between theory and practice is that in theory there’s no difference between theory and practice, but in practice there is.
Кстати, там где-то выше Аист упомянул даункасты в контексте type erasure – дык вот помню в каком проекте (lightweight ORM на скале с компиляцией scala-функций в хранимки – всё на макросах, разумеется), но убей бог не помню как и с какого боку, но я вляпывался в даункасты ровно из-за type erasure. Возможно, при трансформациях AST.
О, кстати! Pattern matching над типами – тоже по сути instanceof + даункасты. И используется вовсю и повсеместно, далеко не только при преобразованиях AST.