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

Есть ли способ определить экзистенциально квантифицированный новый тип в GHC Haskell?
Возможно ли в (GHC) Haskell определить экзистенциально-количественный новый тип? Я понимаю, что если задействованы классы типов, это невозможно сделать в реализации с передачей словаря, но для моих целей классы типов не нужны. Что я действительно...
951 просмотров

Что такое WHNF нового типа и как rseq работает с новым типом?
Поскольку newtype фактически удаляются во время компиляции, у них нет переходников, только значения. Итак, что произойдет, если я попрошу его WHNF, используя rseq ? Например, в Sum (lengthyComputation :: Int) `using` rseq где Sum...
248 просмотров

Обобщенное получение Newtype
Haskell может получить экземпляр для MonadState s в T1 ниже, но не в T2 , который, тем не менее, является очень похожим типом. Каким образом мне следует изменить код для T2 , чтобы экземпляр для MonadState s мог быть получен автоматически?...
2935 просмотров
schedule 20.06.2022

Как добавить сравнение равенства (==) к новому типу в Haskell
Я пытаюсь определить новый тип под названием «Poly» в Haskell, где тип представляет собой список «Num», представляющий полиномиальное выражение. [1,2,3] соответствует 3x^2 + 2x + 1, поэтому [4,5,6,0,0...0] — это тот же полином, что и [4,5,6]. Я...
176 просмотров
schedule 14.06.2023

Убираем монады — превращаем приложение монадного преобразователя в монаду нового типа
Я пытаюсь взять, например. ExceptT a (StateT A M) , для некоторого конкретного типа A и монады M , и обернуть их в мои новые пользовательские монады. Сначала я определил, что StateT A M часто появляется в других контекстах, и поэтому я...
749 просмотров

Поднимите локальный читатель монад
import Control.Monad.Reader import Control.Monad.State import Control.Monad.Error data Context data Memory data Functions data InterpreterM a = ExeInterpreter a | PropInterpreter a newtype InterpreterMT m a = InterpreterMT { runInterpreterMT :: m...
246 просмотров
schedule 29.05.2022

Экземпляры синонимов типа запрещены, даже если у меня есть преобразователь монады newtype
Я определил монадный преобразователь UlffT следующим образом. Я работаю с Halogen , но это не вопрос Halogen — я просто предоставляю контекст. UlffT предназначен для наложения на Aff и использования в HalogenM . newtype UlffT m a =...
111 просмотров

Как создать парсер нового типа?
newtype Parser a = PsrOf{ -- | Function from input string to: -- -- * Nothing, if failure (syntax error); -- * Just (unconsumed input, answer), if success. dePsr :: String -> Maybe (String, a)} Я хочу создать парсер...
205 просмотров
schedule 02.03.2024

Развертка без ржавчины для vec новых типов
Если у меня есть следующая программа: struct Foo { a: usize, b: usize, } struct Bar(Foo); fn unwrap_bars(bars: Vec<Bar>) -> Vec<Foo> { bars.into_iter().map(|b| b.0).collect() } Будет ли unwrap_bars скомпилирован в...
294 просмотров
schedule 11.09.2022

Как заключить заимствованную стоимость в новый тип, который также является заимствованной стоимостью?
Я пытаюсь использовать шаблон newtype для переноса ранее существовавший тип. У этого внутреннего типа есть метод modify , который позволяет нам работать с заимствованным изменяемым значением в обратном вызове: struct Val; struct Inner(Val);...
452 просмотров
schedule 30.01.2023

Добавить переменную типа в определение нового типа
В упражнении из Haskell Programming from First Principles говорится, что нужно объявить экземпляр TooMany для типа (Num a, TooMany a) => (a, a) , сначала создав для него newtype . Моя проблема заключается в добавлении ограничения типа к Baz ....
55 просмотров
schedule 23.01.2023

Как в Haskell прикрепить ограничения к параметрическому новому типу, чтобы они автоматически применялись к любому экземпляру класса, который его использует?
Предположим, у меня есть параметрический тип, определенный следующим образом: newtype FancyComplex a b = FancyComplex (a, b) Я намерен никогда не использовать этот новый тип для любых других параметров, кроме числовых. Я имею в виду, что для...
179 просмотров
schedule 07.03.2023

Сопоставление шаблонов по «ИЛИ» двух новых типов в haskell
Я использую библиотеку диаграмм решений в программе Haskell. Для этого я хочу объявить 2 разных (новых) типа, которые отслеживают, с какой диаграммой решений я имею дело. Библиотека, которую я использую, — это cudd, а базовым типом диаграммы решений...
70 просмотров