Вопросы по теме 'type-level-computation'
Проблемы с реализацией подписки на массив в Haskell, связанной с EDSL
Контекст
Я пытаюсь реализовать EDSL, который немного напоминает IBM OLP (язык моделирования для линейного программирования).
Код
Код Haskell EDSL
{-# LANGUAGE GADTs #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE...
86 просмотров
schedule
19.11.2023
Проблемы с определением аппликативного экземпляра
Предположим, что я хочу определить тип данных, индексированный двумя средами уровня типа. Что-то типа:
data Woo s a = Woo a | Waa s a
data Foo (s :: *) (env :: [(Symbol,*)]) (env' :: [(Symbol,*)]) (a :: *) =
Foo { runFoo :: s -> Sing env...
116 просмотров
schedule
27.11.2022
Опыт работы с отчетами с использованием индексированных монад в производстве?
В предыдущем вопросе я обнаружил существование стрел Клейсли возмутительной удачи Конора МакБрайда при поиске способов кодирования примеров Idris в Haskell . Мои усилия понять код Макбрайда и заставить его скомпилировать на Haskell привели к...
419 просмотров
schedule
15.05.2024
Пример функции уровня типа, которая не является конструктором типа
Что уникального в концепции «конструктора типа» в Haskell по сравнению с другими функциями уровня типа?
Насколько я знаю они:
разрешить пользователю применять к ним аргументы во время компиляции
привести к простому типу (например, не к...
198 просмотров
schedule
24.05.2024
Почему «нейтральный» не нормализуется до «[]» в моноиде списка?
Следующие определения типов Idris проверяются с помощью Idris 1.3.0:
foo : (xs : List Nat) -> xs = ([] <+> xs)
foo xs = Refl
однако это не так:
foo : (xs : List Nat) -> xs = (neutral <+> xs)
foo xs = Refl
дает...
59 просмотров
schedule
09.12.2022
Фрагмент Scala в TypeScript (как преобразовать элементы абстрактного типа)
У меня есть небольшой фрагмент списка уровней значений и типов в Scala.
sealed trait RowSet {
type Append[That <: RowSet] <: RowSet
def with[That <: RowSet](that: That): Append[That]
}
object RowSet {
case object Empty extends...
78 просмотров
schedule
09.05.2024