Этот код прекрасные компиляции: {-# ЯЗЫК MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, UndecidableInstances, FlexibleContexts, EmptyDataDecls, ScopedTypeVariables, TypeOperators...
Я сделал функцию подобной массиву numpy. Это преобразовывает списки в массивы, списки списков к 2-м массивам, и т.д. Это работает как это: ghci> arrFromNestedLists ["привет", "мир"]:: Массив (Интервал, (Интервал, ()))...
Edit: Вот действительно простой пример. Мотивация для этого примера ниже. Это компилирует: {- # LANGUAGE TypeFamilies # -} семейство типов F a b f :: a -> F a b
f = undefined f '[a] = f a И ghci ...
Я хотел бы немного поколдовать в библиотеке, позволив полиморфно деструктурировать тип продукта. Это более-менее рабочий макет, иллюстрирующий то, что я хотел бы сделать :{ -#LANGUAGE...
У меня есть новый тип данных Zq q = Zq (IntType q ), где «q» будет экземпляром класса класса Foo a, где тип IntType a, а «IntType» — это просто базовое представление (, т.е. Int,...
Я хотел бы заявить, что связанные данные всегда являются экземпляром определенного класса. class (Context (Associated a b)) = > Класс a, где данные Associated a :: * - > * Контекст контекста (...
При попытке использовать Data.Has я писал следующий код :data Name = Name; экземпляр типа TypeOf Name = Text введите NameRecord = FieldOf Name; Я нашел :экземпляр I NameRecord, где....
Я полагаю, что то, что я хочу, невозможно без Template Haskell, но я все равно спрошу . У меня есть интерфейс для таких типов, как Data.Set и Data.IntSet: семейство типов Elem s::*
class SetLike s where insert :...
Это сложная проблема больше, чем полезная проблема (я потратил несколько часов на нем). Учитывая некоторые функции, put_debug, put_err :: String -> IO ()
put_foo :: String -> StateT [String] m () I ...
Когда я использую функциональные зависимости, я часто сталкиваюсь с условием покрытия. Его можно поднять с помощью UndecidableInstances, но я обычно стараюсь держаться подальше от этого расширения. Вот ...
В этом коде я пытаюсь сделать так, чтобы первый параметр в моей рабочей функции был типом "семейства типов". Я вижу, что в документации по семействам типов аналогичная функция insert принадлежит к типу ....
Я пытаюсь реализовать перемешивание некоторых данных по методу Фишера-Ятса. Этот алгоритм легко реализовать для одномерных массивов. Однако мне нужно иметь возможность перетасовывать данные в двумерной матрице. An ...
Вчера я экспериментировал с семейством типов и наткнулся на препятствие со следующим кодом: {- # LANGUAGE TypeFamilies # - } class C a where type A a myLength :: A a -> Int ...