Вопросы по теме 'type-kinds'

Является ли это более высоким типом в Scala?
Имея следующее определение type MyMap = Map[String, List[Map[Int, String]]] Можно ли определить Map как более высокий тип?
299 просмотров
schedule 05.08.2022

Ожидал тип, но у «i» есть вид «Nat»
Я хочу реализовать простую пропозициональную логику с размером интерпретации, ограниченным типом. Но каким-то образом мне не удается преобразовать числа на уровне типов в значения, используя natVal . Образец кода: import GHC.TypeLits import...
1000 просмотров
schedule 12.11.2022

Что означает * (звездочка) или другие виды в списке экземпляров пикши
Просматривая кучу различных пакетов, я часто натыкаюсь на документацию экземпляров, которая выглядит примерно так ( Control.Category ): Category k (Coercion k) Category * (->) или это ( Control.Monad.Trans .Идентификация ): MonadTrans...
372 просмотров
schedule 29.11.2022

Ограничение параметра типа до Monoid
Ранее я определил функцию, которая берет список Maybe и превращает его в Maybe списка, например так: floop :: [Maybe a] -> Maybe [a] floop [] = Just [] floop (Nothing:_) = Nothing floop (Just x:xs) = fmap (x:) $ floop xs Теперь я хочу...
114 просмотров
schedule 11.09.2022

Что означает странная запись после объявления класса типа
В ghci :i Functor дает мне: class Functor (f :: * -> *) where fmap :: (a -> b) -> f a -> f b ... Что означает (f :: * -> *) ? Похоже, что f должна быть функцией, но это не имеет смысла.
152 просмотров
schedule 02.02.2023

Параметр форсирования семейства типов должен иметь вид *
Этот простой код не компилируется import Data.Kind type family F (k :: Type) :: (t :: k) -> Type Сообщение об ошибке • Expected a type, but ‘t’ has kind ‘k’ • In the kind ‘(t :: k) -> Type’ В каком-то смысле я понимаю, что это...
71 просмотров
schedule 24.10.2023

Тип с более высоким типом в классе типов?
Чтобы узнать, является ли тип типом более высокого типа, ghci предоставляет: Prelude> :k Maybe Maybe :: * -> * И попробовал тип класса, например: Prelude> :k Functor Functor :: (* -> *) -> Constraint Почему я могу...
72 просмотров

Выражение бесконечных видов
При выражении бесконечных типов в Haskell: f x = x x -- This doesn't type check Для этого можно использовать newtype : newtype Inf = Inf { runInf :: Inf -> * } f x = x (Inf x) Существует ли newtype эквивалент для видов,...
162 просмотров
schedule 18.02.2023

Какая спецификация GHC/Haskell говорит, что конструкторы свободных типов соответствуют самым правым типам?
Недавно меня застали врасплох, когда я попытался передать конструктор для типа типа * -> * -> * с одним привязанным типом var функции, ожидающей конструктор для * -> * . Конкретно, это было похоже на передачу (\x -> (x, 42)) ::...
54 просмотров