Вопросы по теме 'type-level-computation'
Соответствие на уровне типа Nat в GHC 7.6
Мой вопрос, наверное, проще всего объяснить на примере:
type family Take (n :: Nat) (xs :: [k]) :: [k]
type instance Take 0 xs = '[]
type instance Take (n+1) (x ': xs) = x ': Take n xs
Однако второй экземпляр здесь отклоняется,...
826 просмотров
schedule
05.07.2023
Возможны ли доказательства экземпляров семейства типов?
Во-первых, я начал с некоторых типичных натуральных чисел на уровне типов.
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE TypeFamilies #-}
data Nat = Z | S Nat
type family Plus (n :: Nat) (m ::...
303 просмотров
schedule
26.02.2022
Преобразование целых чисел в числа Пеано с использованием системы типов
Это продолжение вопроса, который я задал почти два года назад . Я все еще экспериментирую с системой типов, чтобы написать небольшую библиотеку линейной алгебры, в которой размеры векторов/матриц/тензоров кодируются с использованием системы типов (с...
756 просмотров
schedule
21.12.2022
Как заставить Haskell проверять длину списков?
Мы можем определить функции f и g следующим образом:
f :: [a] -> [a] -> [a]
f = (++)
g :: [a] -> [a] -> [a]
g = zipWith (+)
И f , и g принимают в качестве параметров два списка и возвращают новый список, но они разные: f...
1306 просмотров
schedule
07.07.2023
Программирование уровня типа Scala - представление иерархии
Я изучаю программирование на уровне типов в Scala, и мне интересно, можно ли представить дерево или иерархию с помощью программирования на уровне типов.
Простым случаем будет многоуровневое дерево.
A_
|
B_
|C
|D
|
E...
900 просмотров
schedule
07.11.2022
Преобразовать список уровня типа '[a, b, c,] в функцию a- ›b-› c- ›
У меня есть семейство данных, проиндексированное списком на уровне типов, где типы в списке соответствуют параметрам экземпляра данных. Я хочу написать функцию, которая будет иметь разную арность и параметры в зависимости от экземпляра данных, чтобы...
162 просмотров
schedule
06.04.2022
Материализуйте значение для типа с одним обитателем
Благодаря ответу @MilesSabin я могу написать последовательность Фибоначчи уровня типа:
sealed trait Digit
case object Zero extends Digit
case object One extends Digit
sealed trait Dense { type N <: Dense }
sealed trait DNil extends Dense {...
662 просмотров
schedule
26.05.2022
Ограничения равенства для списков уровня типов
Я пытаюсь наложить ограничение на уровне типа, согласно которому список уровня типа должен иметь ту же длину, что и переносимый Nat уровня типа. Например, при использовании пакета Length from singletons [1]:
data (n ~ Length ls) => NumList (n...
364 просмотров
schedule
01.01.2023
Ключи Typesafe для карты
Учитывая следующий код:
val m: Map[String, Int] = .. // fetch from somewhere
val keys: List[String] = m.keys.toList
val keysSubset: List[String] = ... // choose random keys
Мы можем определить следующий метод:
def sumValues(m: Map[String,...
268 просмотров
schedule
13.08.2023
Когда вычисления на уровне типов происходят с семействами типов?
Я пытаюсь составить интуитивное представление о том, когда (и сколько раз) вычисления на уровне типов с семействами типов «происходят» в Haskell. В качестве конкретного примера рассмотрим этот класс типов для индексации в n-арный продукт с...
190 просмотров
schedule
03.11.2022
Вызов Aux для более высокого типа без привязки к оригиналу
Я пытаюсь использовать шаблон Aux с более высоким типом, и мне не нужно указывать параметр более высокого типа до тех пор, пока это не произойдет. Это похоже на вопрос SO, описанный здесь , но с одним существенным отличием: я Пойду наоборот, т.е....
43 просмотров
schedule
24.12.2022
Существует ли класс типа, который проверяет наличие хотя бы одного неявного типа?
У меня есть черта Foo[T, U] и алгоритм уровня типа, который задает L <: HList и целевой тип U , сообщает мне, существует ли T в L , такое что есть неявное Foo[T, U] в области видимости. Это реализовано с использованием следующего класса...
299 просмотров
schedule
09.10.2022
Обновление n-арного продукта из sop-core на совместимую сумму
Я работаю с библиотекой sop-core и хочу написать функцию со следующим типом:
patch :: NS I xs -> NP Maybe xs -> NP Maybe xs
xs - это список типов на уровне типа, например '[Int,Char,Bool] . I - это функтор тождества. NS I...
44 просмотров
schedule
21.05.2022
Как проверить свойства списка на уровне типов в haskell?
У меня есть такие семейства типов:
type family xs ++ ys where
'[] ++ ys = ys
(x : xs) ++ ys = x : (xs ++ ys)
type family Drop n xs where
Drop O xs = xs
Drop (S n) (_ : xs) = Drop n xs
type family Length xs where
Length...
202 просмотров
schedule
10.08.2022
как написать тип Invert в машинописном тексте, чтобы инвертировать порядок кортежей
type a = [1,2,3]
type Invert<T extends any[] & {'0': any}> = ???
type b = Invert<a> // should yield [3,2,1]
Я застрял, чтобы выяснить определение типа Invert кортежа, а также типов Init и Last , хотя они могут быть построены...
426 просмотров
schedule
06.05.2023