Вопросы по теме 'typeclass'

Оперировать значениями внутри структурно схожих типов в Haskell
Извините за мой крайне ограниченный Haskell-fu. У меня есть серия data типов, определенных в разных модулях, которые структурированы одинаково: -- in module Foo data Foo = Foo [Param] -- in module Bar data Bar = Bar [Param] -- * many more...
264 просмотров

Как я могу превратить Maybe-Transformer MaybeT в экземпляр MonadWriter?
Я пытаюсь построить монаду MaybeT-Transformer на основе примера в Real World Haskell , глава Monad Transformers : data MaybeT m a = MaybeT { runMT :: m (Maybe a) } instance (Monad m) => Monad (MaybeT m) where m >>= f = MaybeT $ do a...
609 просмотров
schedule 21.04.2024

Автоматическое преобразование типов для вызовов FFI в Haskell
Я определил следующий модуль, чтобы помочь мне с экспортом функции FFI: {-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, TypeSynonymInstances #-} module ExportFFI where import Foreign import Foreign.C class FFI basic ffitype | basic...
996 просмотров
schedule 22.03.2024

Несоответствие типа деления haskell?
Я новичок в Haskell и пытаюсь реализовать калькулятор для домашнего задания. Я застрял в месте, где мне нужно выполнить деление на два значения, и я думаю, что проблема в том, что их тип не может быть выведен или должен быть объявлен/преобразован. Я...
3327 просмотров
schedule 01.12.2023

Ограничения haskell rank n? (или, преобразователи монад и Data.Suitable)
Я пытаюсь написать что-то похожее на «типы ранга 2», но вместо этого для ограничений. (Или, может быть, неверно предполагать, что изменение -> в определении "типов ранга 2" на => имеет смысл; пожалуйста, отредактируйте вопрос, если вы...
336 просмотров
schedule 07.11.2022

Haskell: добавить класс типа
Насколько я понимаю, Foldable в основном представляет структуры, которые имеют несколько элементов одного типа, которые можно повторять, т. е. списки, карты, наборы и т. д. Есть ли такой класс, как Appendable или Insertable , который в...
534 просмотров
schedule 29.09.2022

Scala — пример класса типов. Как объяснить преимущества?
Итак, я показывал коллеге/другу пример шаблона класса типов в Scala. Это выглядит так: case class Song(name: String, artist: String) case class Address(street: String, number: Int) trait LabelMaker[T] { def output(t: T): String } object...
1255 просмотров
schedule 22.04.2024

Неявное преобразование в супертип с использованием классов типов
Почему foo1 не работает, а foo2 успешно? Разве компилятор не должен автоматически проверять все супертипы Blah? trait Foo[A] { def bar: A } trait Bleh; case class Blah extends Bleh; implicit object BlehFoo extends Foo[Bleh] def...
599 просмотров
schedule 06.05.2024

Можно ли ввести дополнительные переменные типа в ограничение суперкласса?
При работе с семействами типов часто удобно использовать ограничения равенства, чтобы избежать повторения имени функции типа в сигнатуре: class Foo f where type BulkyAssociatedType f :: * foo :: BulkyAssociatedType f -> f ... bar ::...
210 просмотров

Добавление подписи типа вызывает ошибку компиляции
В Haskell я могу определить такую ​​функцию: foo :: Int -> Int foo n = n + 1 Если я хочу быть анальным, я могу добавить сигнатуру типа в последнюю строку следующим образом: foo :: Int -> Int foo n = n + 1 :: Int Я также могу...
207 просмотров
schedule 11.02.2024

Доступ к шоу по умолчанию в Haskell?
Допустим, у вас есть структура данных (позаимствованная из этого вопроса ): data Greek = Alpha | Beta | Gamma | Delta | Eta | Number Int Теперь можно сделать его экземпляром Show , добавив deriving Show к этой инструкции. Скажем,...
1796 просмотров
schedule 25.09.2022

Использовать параметр типа экземпляра в классе типов
В качестве упражнения я пытаюсь создать класс типов Vector в качестве упражнения: class Vector v where vplus :: v -> v -> v vnegate :: v -> v type V3 a = (a,a,a) instance (Num a) => Vector (V3 a) where (a,b,c) `vplus` (d,e,f)...
256 просмотров
schedule 30.10.2023

Как иметь общий числовой тип в scala для сложения и умножения?
Я пытаюсь реализовать общие числа в scala, которые поддерживают сложение и умножение, могут сопоставляться с любым числом и не ограничиваются каким-либо одним типом, например Int , Double и т. д. Я просмотрел документы и обнаружил, что...
1225 просмотров
schedule 04.02.2024

Не смог вывести из контекста
У меня есть класс этого типа. Но он не может вывести, что тип, возвращаемый из goal , равен типу isGoal первой переменной. Как это исправить? {-# LANGUAGE TypeFamilies, FlexibleContexts #-} class Problem p where type State p :: *...
179 просмотров
schedule 07.03.2024

Одиночки, семейства типов и экзистенциальные типы для экземпляра FromJSON
Вероятно, проще сначала кратко изложить мою общую проблему, а затем показать, где я застрял. Я хочу получить список JSON некоторого одноэлементного индексированного типа, где тип индексации также имеет связанное семейство типов. В коде: data...
434 просмотров

Почему этот код с использованием UndecidableInstances компилируется, а затем генерирует бесконечный цикл времени выполнения?
При написании кода с использованием UndecidableInstances ранее я столкнулся с чем-то очень странным. Мне удалось непреднамеренно создать код, который проверяет типы, хотя я считал, что этого не должно быть: {-# LANGUAGE FlexibleInstances #-}...
269 просмотров

Могу ли я явно передать словарь класса в функцию?
Допустим, у меня есть класс типов: data Foo = Foo deriving (Show) class Monad m => MonadFoo m where getFoo :: m Foo Поскольку GHC реализует классы типов через передачу по словарю (несмотря на использование SPECIALIZE ), он эффективно...
691 просмотров
schedule 30.11.2023

Haskell: экземпляр для данных с несколькими переменными типа?
Я хочу создать класс типов для различных типов "столбцов материала", так что-то вроде этого: class Column c where at :: c a -> Int -> a data ListColumn a = ListColumn { lcContent :: [a] } instance Column ListColumn where at c i...
312 просмотров
schedule 11.02.2024

Доступ к члену экземпляра класса из-за пределов его определения
У меня есть этот тип: newtype Mem s a = Mem { runMem :: s -> (a,s) } и я должен создать экземпляр моноида для этого типа, но для этого я должен использовать mempty и mappend моноида a, независимо от того, что это может быть. Как бы это...
74 просмотров
schedule 14.04.2024

Почему Haskell [] (список) не является классом типа?
Я пишу функцию Haskell, которая принимает на вход список. То есть нет никаких причин, по которым это не может быть очередь или исключение из очереди, или что-то еще, что позволяет мне получить доступ к его «голове» и «хвосту» (и проверить, пуст ли...
721 просмотров
schedule 28.04.2024