Вопросы по теме 'higher-rank-types'
Документация STArray для новичков и вопросы, связанные с состоянием/ST
Мне трудно понять STArray из документации и других руководств/обсуждений, которые я нашел в Google. У меня есть еще несколько связанных вопросов ниже.
Согласно документации, STArray являются
Изменяемые упакованные и неупакованные...
6169 просмотров
schedule
08.10.2022
Какова цель Rank2Types?
Я не очень разбираюсь в Haskell, поэтому это может быть очень простой вопрос.
Какие языковые ограничения действуют Rank2Types решить? Разве функции в Haskell не поддерживают полиморфные аргументы?
13207 просмотров
schedule
26.07.2023
Понимание псевдонима типа ранга 2 с ограничением класса
У меня есть код, который часто использует функции, которые выглядят как
foo :: (MyMonad m) => MyType a -> MyOtherType a -> ListT m a
Чтобы попытаться сократить это, я написал следующий псевдоним типа:
type FooT m a = (MyMonad m)...
702 просмотров
schedule
20.11.2022
Есть ли преимущества использования Rank2Types в пользу RankNTypes?
Насколько мне известно, разрешимый алгоритм проверки типов существует (только) для типов ранга 2. Использует ли GHC как-то этот факт, и имеет ли он какое-то практическое значение?
Существует ли также понятие основных типов для типов ранга 2 и...
937 просмотров
schedule
01.07.2022
Особые случаи при обработке типов более высокого ранга в GHC?
Рассмотрим этот пример из сеанса GHCI:
Prelude> :set -XRankNTypes
Prelude> let bar :: (forall a.[a]->[a]) -> [Int]; bar f = f [1,2,3]
Это определяет функцию bar с типом ранга 2. Следовательно, вывод типа не должен быть в...
117 просмотров
schedule
12.05.2022
Эта редукция не всегда выполняется в Haskell?
Я обнаружил, что могу сказать
{-# LANGUAGE RankNTypes #-}
f1 :: (forall b.b -> b) -> (forall c.c -> c)
f1 f = id f
(и HLint сказал мне, что я могу сделать здесь «эта-уменьшение»), но
f2 :: (forall b.b -> b) -> (forall c.c...
873 просмотров
schedule
21.12.2022
Чисто прикладной анализатор с использованием альтернативы
В предыдущем сообщении пользователь предложил реализацию чисто аппликативного синтаксического анализатора для Haskell (исходный код из здесь ). Ниже приведена частичная реализация этого парсера:
{-# LANGUAGE Rank2Types #-}
import...
485 просмотров
schedule
26.10.2023
О вложенных типах подвески CPS
Начнем со знакомого типа приостановленных вычислений CPS, (a -> r) -> r , который пишется как Cont r a на языке mtl . Мы знаем, что он изоморфен a , пока он остается полиморфным в r . Если мы вложим этот тип, мы получим этот тип ранга...
128 просмотров
schedule
27.03.2023
Почему аннотация этого типа неверна?
Я попытался следовать статье Габриэля Гонсалеса и столкнулся с несоответствием типов . Рассмотрим следующий короткий модуль:
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE Rank2Types #-}
module Yoneda where
newtype F a = F a deriving (Show,...
151 просмотров
schedule
11.03.2023