Вопросы по теме '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 просмотров
schedule
05.10.2022
Выражение бесконечных видов
При выражении бесконечных типов в 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 просмотров
schedule
28.10.2022