Существует ли бесплатная реализация Ada?

SportsCar - это не CarLike[String, SportsCar], это CarLike[String, SimpleCar[String]]. Обратите внимание, что SportsCar extends SimpleCar[String], но это не помогает, поскольку CarLike не является ковариантным в C.

Вы не можете сделать ковариантным CarLike в C, так как его метод crash принимает C. Вместо этого вы можете передать SimpleCar[String] в Crasher (в конце концов, спортивные машины могут разбиться на других машинах, верно?):

val crasher = Crasher[String, SimpleCar[String]](
  s => s.tail,
  c => c.parts.filter(p => p.length > 0)
)

Или вы можете изменить Crasher, чтобы получить другой параметр типа :

case class Crasher[T, C <: CarLike[T, C], X <: C](partsDamager: T => T,
                                                  carChecker: X => Seq[T]) {
  // ...
}

val crasher = Crasher[String, SimpleCar[String], SportsCar](
  s => s.tail,
  c => c.parts.filter(p => p.length > 0)
)
15
задан Thomas Owens 7 October 2008 в 23:04
поделиться

3 ответа

GNAT доступен для скачивания здесь: https://libre.adacore.com /

Ищут "GNAT Выпуск GPL". Не уверенный, почему это так хорошо скрыто на том небольшом известном сайте.

17
ответ дан 1 December 2019 в 00:50
поделиться

Вот большой список , компиляторы Ada от Открывают Directory.

GNU компилятор Ada , кажется, более популярный.

11
ответ дан 1 December 2019 в 00:50
поделиться

GNAT, GNU реализация Ada: http://www.gnu.org/software/gnat/gnat.html

8
ответ дан 1 December 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: