Вопросы по теме 'higher-kinded-types'

Какую общую структуру имеет этот тип?
Взламывая что-то ранее, я создал следующий код: newtype Callback a = Callback { unCallback :: a -> IO (Callback a) } liftCallback :: (a -> IO ()) -> Callback a liftCallback f = let cb = Callback $ \x -> (f x >> return cb) in cb...
643 просмотров
schedule 05.03.2023

В чем разница между родовым и высокородным типом?
Я обнаружил, что действительно не понимаю разницы между «родовым типом» и «высшим типом». Код Scala: trait Box[T] Я определил trait с именем Box , который является конструктором типа, который принимает тип параметра T . (Правильно ли...
1701 просмотров

Ошибка, типы более высокого типа Scala: аргументы типа не соответствуют. границы типа T более строгие, чем объявленные границы типа T
Вот простой эксперимент в Scala REPL: scala> trait A; trait B extends A; trait C extends B defined trait A defined trait B defined trait C scala> trait TC[T] defined trait TC scala> trait TC2[T <: B] defined trait TC2 scala>...
887 просмотров
schedule 15.01.2024

Почему монады не складываются в scala
Почему монады не составляют, если монада является аппликативом, а аппликатив - функтором. Вы видите эту цепочку наследования во многих статьях в сети (через которые я прошел). Но когда функторы и аппликативы составляют, почему монады нарушают это?...
2140 просмотров
schedule 29.05.2022

Высокодородный тип Scala и ковариантный
Я пытаюсь абстрагироваться от некоторого библиотечного API, который может возвращать любой из типов A , Option[A] или Seq[A] . Пока у меня что-то вроде этого: type Const[T] = T sealed abstract class Request[F[_], A] case class...
266 просмотров
schedule 15.03.2022

Являются ли типы высшего порядка * действительно * типами в Haskell? Или они просто обозначают коллекции * конкретных * типов и ничего более?
Парамаметрически полиморфные функции Рассмотрим следующую функцию: f :: a -> Int f x = (1 :: Int) Мы могли бы сказать, что тип f - это a -> Int , и, следовательно, f имеет "полиморфный" тип. Что из следующего является...
3229 просмотров

Что такое унарный тип?
Я просматриваю раздел Высокородные типы и специальный полиморфизм школы Scala в Твиттере, и я не понимаю и нигде не могу найти ссылку на унарный тип . Вот контекст использования: Например, в то время как « унарные типы » имеют такие...
617 просмотров

Содержит ли конструктор типов Both фантомный тип для левого/правого регистра?
Насколько я знаю, в Haskell только типы содержат значения, а не конструкторы типов. Either — это конструктор бинарного типа вида * -> * -> * . Left и Right оба применяют этот конструктор типа к одному типу, который предоставляется...
154 просмотров

Scala либо со списком
Я хотел реализовать аналогичный тип с именем Result для типа Either . Основное отличие состоит в том, что левая сторона типа Result всегда должна быть списком чего-то. Какое определение типа было бы правильным для этого? Я пробовал иметь...
119 просмотров
schedule 03.08.2022

Разновидность ReaderT?
Если это может превратиться в XY-проблему , возможно ли иметь ReaderT с другим доброжелательное окружение? Я пытаюсь что-то вроде... type AppM (perms :: [*]) = ReaderT (perms :: [*]) IO ... но компилятор жалуется на... Expected a...
177 просмотров
schedule 14.09.2022

Как набрать стиль прохождения словаря?
Я знаю, что TS не поддерживает высшие типы. В качестве альтернативы для языков без HKT и классов типов существует стиль передачи словаря: const map = ({map}) => f => tx => map(f) (tx); const arrMap = f => xs => xs.map(f);...
35 просмотров

Как определить контекст, связанный с типом более высокого типа (конструктор типов)
Я пробовал следующее def test[Option[T]: Ordering](value1: Option[T], value2: Option[T]) = { val e = implicitly(Ordering[Option[T]].compare(value1, value2)) } а не работает? Есть идеи, в чем проблема? ИЗМЕНИТЬ Это конечно работает...
79 просмотров