Как кэшировать апачей GZIP сжатое содержание

Я думаю, что они имеют в виду одно и то же. Согласованность ставится под сомнение только тогда, когда у вас есть несколько способов получения значения экземпляра / неявного значения; «каждый другой действительный типизированный производный» интересен только тогда, когда является более чем один раз типизирующим производным. И Scala, и Haskell не разрешают создавать экземпляры во время компиляции, что может привести к неоднозначным выводам.

Scala

Комментарий Одерского гласит это для Scala: существует только один локальный способ разрешения экземпляров. Другими словами, существует только один действительный вывод локальной типизации. Достаточно тривиально, это согласуется с самим собой. Мне не ясно, что даже имеет смысл говорить о глобальной согласованности в Scala, но, если это так, у Scala определенно нет этого:

object Object1 {
  implicit val i: Int  = 9
  println(implicitly[Int])    // valid typing derivation of `Int` => printing 9
}
object Object2 {
  implicit val i: Int  = 10
  println(implicitly[Int])    // valid typing derivation of `Int` => printing 10
}

Haskell

Поскольку экземпляры Haskell являются глобальными, нет смысла различать локальную / глобальную согласованность.

Хаскелл запрещает во время компиляции иметь два экземпляра, где один из них совпадает с другим. Это превращает поиск производных типов в однозначную задачу поиска без обратной проверки. Не двусмысленность - это то, что дает нам согласованность.

Интересно, что GHC позволяет вам ослабить это требование с помощью -XIncoherentInstances, позволяющего записывать локально не смежные экземпляры, что также может нарушить глобальную согласованность.

6
задан 1 May 2009 в 18:07
поделиться