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

Каков наилучший способ избежать столкновения между двумя определениями класса типов в бесформенном
Shapeless имеет аккуратный класс типов механизм порождения , который позволяет вам определять классы типов и получать автоматические порождения для любого класса типов. Чтобы использовать механизм деривации в качестве пользователя класса типов, вы...
162 просмотров

Сопоставить 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 просмотров

Неявный Generic.Aux отсутствует при преобразовании из Shapeless HList в класс case
Я только недавно начал изучать scala, и сегодня я решил, что хочу написать парсер CSV, который будет хорошо загружаться в классы case, но хранить данные в строках (списках) объекта HList Shapeless, чтобы я мог немного познакомиться с программированием...
928 просмотров
schedule 20.10.2023

Объясните шаблон `LowPriorityImplicits`, используемый в программировании на уровне типов Scala.
Если посмотреть на исходный код некоторых библиотек Scala, например бесформенный , я часто нахожу черты с именем LowPriorityImplicits . Не могли бы вы объяснить эту закономерность? Какая проблема решается и как ее решает шаблон?
771 просмотров

Идрис - Невозможно оценить приложение функции в типе
У меня проблема, когда у меня есть значение типа fun a , где fun является функцией, а a значением, которое не вычисляется при проверке типа и выдает ошибку объединения, когда я заставляю его быть результатом этой функции применение....
223 просмотров

Программирование на уровне типов для представления многомерных массивов (тензоры)
Я хотел бы иметь тип для представления многомерных массивов (тензоров) безопасным способом. поэтому я мог бы написать, например: zero :: Tensor (5,3,2) Integer , который будет представлять многомерный массив из 5 элементов, каждый из которых имеет 3...
360 просмотров

Как получить с помощью GHC.TypeLits.TypeError ошибку типа во время компиляции, а не во время выполнения?
До сих пор я предполагал, что GHC выполняет функцию уровня типа (семейство типов) во время компиляции. Поэтому сообщение об ошибке, вызванное семейством типов TypeError, должно быть выдано во время компиляции. В следующем примере я получаю ошибку...
102 просмотров

работа с доказательствами с использованием CmpNat и синглтонов в Haskell
Я пытаюсь создать некоторые функции для работы со следующим типом. В следующем коде используются одиночки и ограничения на GHC-8.4.1: {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE...
246 просмотров

Установление связей между типами и значениями
У меня есть реализации арифметики на уровне типов, способные выполнять некоторую арифметическую проверку времени компиляции, а именно <,>,= двумя способами: простая реализация строгая реализация С ними у меня может быть функция...
85 просмотров

Рекурсивное преобразование между вложенными классами случаев, когда поля в целевом объекте являются невыровненными подмножествами исходного класса.
Учитывая пару классов case, Source и Target , которые имеют вложенные классы case, и на каждом уровне вложенности поля в Target являются невыровненными подмножествами полей в Source , есть ли способ написать универсальное преобразование на...
577 просмотров

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 просмотров

Получение MirroredElemLabels из зеркала
scala.deriving.Mirror в Scala 3 имеет член типа MirroredElemLabels , который является кортеж строковых литералов. Какой стандартный способ получить этот тип в качестве значения? РЕДАКТИРОВАТЬ: вот код , который вызывает ошибку компилятора...
58 просмотров