Вопросы по теме 'type-level-computation'
Каков наилучший способ избежать столкновения между двумя определениями класса типов в бесформенном
Shapeless имеет аккуратный класс типов механизм порождения , который позволяет вам определять классы типов и получать автоматические порождения для любого класса типов.
Чтобы использовать механизм деривации в качестве пользователя класса типов, вы...
162 просмотров
schedule
12.02.2023
Сопоставить Shapeless hlist типа F[T1] :: :: F[Tn] :: HNil с типом T1 :: :: Tn :: HNil (последовательность на уровне типов)
Я создаю общую функцию, которая принимает HList формы F[T1] :: ... :: F[Tn] :: HNil , преобразует ее в F[T1 :: ... :: Tn :: HNil] , а затем должна передать ее в переданный блок. Однако для того, чтобы это работало, мне нужно извлечь Тип HList в...
316 просмотров
schedule
01.11.2022
Типы, зависящие от пути scala, и доказательства уровня типа
В настоящее время я пытаюсь определить модель языка синхронизированного потока данных в scala.
Поток виртуально представляет собой бесконечную последовательность значений некоторого типа T, изменяемую некоторыми часами C (часы показывают, в какие...
571 просмотров
schedule
04.02.2023
Неявный Generic.Aux отсутствует при преобразовании из Shapeless HList в класс case
Я только недавно начал изучать scala, и сегодня я решил, что хочу написать парсер CSV, который будет хорошо загружаться в классы case, но хранить данные в строках (списках) объекта HList Shapeless, чтобы я мог немного познакомиться с программированием...
928 просмотров
schedule
20.10.2023
Объясните шаблон `LowPriorityImplicits`, используемый в программировании на уровне типов Scala.
Если посмотреть на исходный код некоторых библиотек Scala, например бесформенный , я часто нахожу черты с именем LowPriorityImplicits .
Не могли бы вы объяснить эту закономерность? Какая проблема решается и как ее решает шаблон?
771 просмотров
schedule
06.07.2022
Идрис - Невозможно оценить приложение функции в типе
У меня проблема, когда у меня есть значение типа fun a , где fun является функцией, а a значением, которое не вычисляется при проверке типа и выдает ошибку объединения, когда я заставляю его быть результатом этой функции применение....
223 просмотров
schedule
25.05.2022
Программирование на уровне типов для представления многомерных массивов (тензоры)
Я хотел бы иметь тип для представления многомерных массивов (тензоров) безопасным способом. поэтому я мог бы написать, например: zero :: Tensor (5,3,2) Integer , который будет представлять многомерный массив из 5 элементов, каждый из которых имеет 3...
360 просмотров
schedule
13.08.2022
Как получить с помощью GHC.TypeLits.TypeError ошибку типа во время компиляции, а не во время выполнения?
До сих пор я предполагал, что GHC выполняет функцию уровня типа (семейство типов) во время компиляции. Поэтому сообщение об ошибке, вызванное семейством типов TypeError, должно быть выдано во время компиляции.
В следующем примере я получаю ошибку...
102 просмотров
schedule
01.12.2022
работа с доказательствами с использованием CmpNat и синглтонов в Haskell
Я пытаюсь создать некоторые функции для работы со следующим типом. В следующем коде используются одиночки и ограничения на GHC-8.4.1:
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE...
246 просмотров
schedule
12.10.2023
Установление связей между типами и значениями
У меня есть реализации арифметики на уровне типов, способные выполнять некоторую арифметическую проверку времени компиляции, а именно <,>,= двумя способами:
простая реализация
строгая реализация
С ними у меня может быть функция...
85 просмотров
schedule
20.10.2022
Рекурсивное преобразование между вложенными классами случаев, когда поля в целевом объекте являются невыровненными подмножествами исходного класса.
Учитывая пару классов case, Source и Target , которые имеют вложенные классы case, и на каждом уровне вложенности поля в Target являются невыровненными подмножествами полей в Source , есть ли способ написать универсальное преобразование на...
577 просмотров
schedule
15.06.2023
Scala — вычитание двух натуральных чисел на уровне типа
Мы можем кодировать сложение и умножение натуральных чисел в Scala. Но можно ли вычесть два натуральных числа на уровне типа?
Я наполовину скопировал следующую кодировку натуральных чисел в Scala:
sealed trait Natural {
type Plus[That...
678 просмотров
schedule
30.03.2023
Оценка с использованием программирования на уровне типов в Haskell: потеряны ли составные типы?
Я хотел бы смешать оцененные и неоцененные термины, используя программирование на уровне типов.
Я сделал простой пример, где Sum не оценивается, а Const оценивается.
Следующее работает нормально:
{-# LANGUAGE DataKinds #-}
{-#...
135 просмотров
schedule
17.07.2023
Утверждение, что класс типов сохраняется для всех результатов применения семейства типов
У меня есть семейство типов, определенное следующим образом:
type family Vec a (n :: Nat) where
Vec a Z = a
Vec a (S n) = (a, Vec a n)
Я хотел бы заявить, что результат применения этого семейства типов всегда соответствует ограничению...
153 просмотров
schedule
11.03.2022
Получение MirroredElemLabels из зеркала
scala.deriving.Mirror в Scala 3 имеет член типа MirroredElemLabels , который является кортеж строковых литералов. Какой стандартный способ получить этот тип в качестве значения?
РЕДАКТИРОВАТЬ: вот код , который вызывает ошибку компилятора...
58 просмотров
schedule
27.03.2022