xeno_by (xeno_by) wrote,
xeno_by
xeno_by

Category:

Зачем компилятор должен поддерживать гигиену?

Затем, чтобы синтаксический сахар в вот таких ситуациях
case class C(x: D)

↓

object C {
  def apply(x: D) = new C(x)
}
Не приводил к казусам вроде:
case class C(x: D)
object C { type D = Double }

↓

object C {
  type D = Double
  def apply(x: D) = new C(x)
}
Как говорится, science. It works. Низкотехнологичные решения в таких ситуациях вынуждены прибегать к очень некрасивым хакам для реализации того, что в гигиеничных системах достигается забесплатно.
Tags: macros, scala
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 0 comments