Вопросы по теме 'typeclass'
Оперировать значениями внутри структурно схожих типов в Haskell
Извините за мой крайне ограниченный Haskell-fu.
У меня есть серия data типов, определенных в разных модулях, которые структурированы одинаково:
-- in module Foo
data Foo = Foo [Param]
-- in module Bar
data Bar = Bar [Param]
-- * many more...
264 просмотров
schedule
23.11.2022
Как я могу превратить 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 просмотров
schedule
13.11.2023
Добавление подписи типа вызывает ошибку компиляции
В 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 просмотров
schedule
22.12.2023
Почему этот код с использованием UndecidableInstances компилируется, а затем генерирует бесконечный цикл времени выполнения?
При написании кода с использованием UndecidableInstances ранее я столкнулся с чем-то очень странным. Мне удалось непреднамеренно создать код, который проверяет типы, хотя я считал, что этого не должно быть:
{-# LANGUAGE FlexibleInstances #-}...
269 просмотров
schedule
21.09.2022
Могу ли я явно передать словарь класса в функцию?
Допустим, у меня есть класс типов:
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