Вопросы по теме 'newtype'
Есть ли способ определить экзистенциально квантифицированный новый тип в GHC Haskell?
Возможно ли в (GHC) Haskell определить экзистенциально-количественный новый тип? Я понимаю, что если задействованы классы типов, это невозможно сделать в реализации с передачей словаря, но для моих целей классы типов не нужны. Что я действительно...
951 просмотров
schedule
29.06.2023
Что такое WHNF нового типа и как rseq работает с новым типом?
Поскольку newtype фактически удаляются во время компиляции, у них нет переходников, только значения. Итак, что произойдет, если я попрошу его WHNF, используя rseq ? Например, в
Sum (lengthyComputation :: Int) `using` rseq
где Sum...
248 просмотров
schedule
04.05.2023
Обобщенное получение 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 просмотров
schedule
09.06.2023
Поднимите локальный читатель монад
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 просмотров
schedule
28.08.2022
Как создать парсер нового типа?
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 просмотров
schedule
22.05.2023