Подтвердить что ты не робот

`Right 5` в Haskell и Scala

В ghci я побежал:

ghci> :t Right 5
Right 5 :: Num b => Either a b

Что означает a?

Как он сравнивается с версией Scala?

scala> Right(5)
res0: scala.util.Right[Nothing,Int] = Right(5)
4b9b3361

Ответ 1

a, как b в этом примере, является переменной типа. Он может быть создан с любым типом (тогда как b может быть создан любым типом, который удовлетворяет ограничению, что он также является экземпляром Num).

Пример scala работает совсем по-другому, поскольку система типа scala отличается от другой; Нет реальной концепции значения, когда-либо имеющего не полностью созданный тип, поэтому вам нужно назначить тип Left возможности вашего значения Either. Если учесть дополнительные ограничения, это заканчивается Nothing. В связи с тем, как работает система типа scala (Nothing является подтипом любого другого типа, поэтому вы можете рассматривать ее как двойную по отношению к типу Any), а Either[Nothing,B] также является Either[A,B] для любого a.