Вопросы по теме '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 просмотров
schedule
07.03.2022
Ошибка, типы более высокого типа 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 просмотров
schedule
02.03.2022
Что такое унарный тип?
Я просматриваю раздел Высокородные типы и специальный полиморфизм школы Scala в Твиттере, и я не понимаю и нигде не могу найти ссылку на унарный тип . Вот контекст использования:
Например, в то время как « унарные типы » имеют такие...
617 просмотров
schedule
17.10.2022
Содержит ли конструктор типов Both фантомный тип для левого/правого регистра?
Насколько я знаю, в Haskell только типы содержат значения, а не конструкторы типов. Either — это конструктор бинарного типа вида * -> * -> * . Left и Right оба применяют этот конструктор типа к одному типу, который предоставляется...
154 просмотров
schedule
01.03.2024
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 просмотров
schedule
22.11.2022
Как определить контекст, связанный с типом более высокого типа (конструктор типов)
Я пробовал следующее
def test[Option[T]: Ordering](value1: Option[T], value2: Option[T]) = {
val e = implicitly(Ordering[Option[T]].compare(value1, value2))
}
а не работает? Есть идеи, в чем проблема?
ИЗМЕНИТЬ
Это конечно работает...
79 просмотров
schedule
22.04.2024