Публикации по теме 'monads'


Я не думаю, что это точно.
M(M(a)) => M(a) является членом M(x) => x Я не думаю, что это точно. Монада знает, как свернуть два функториальных вычисления, то есть что означает композиция для двух вычислений в одном и том же контексте. Давайте посмотрим на экземпляр монады для функций и представим, что функции были монадами в Javascript. Я использую стрелочную функцию с собственным телом, чтобы было понятнее: const chain = f => g => { // returns a monad instance for functions return x =>..

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

Поместите два монадических значения в пару и верните ее
Я играю с Parsec и хочу объединить два синтаксических анализатора в один с результатом, помещенным в пару, а затем передать ему другую функцию для работы с результатом синтаксического анализа, чтобы написать что-то вроде этого: try (pFactor...
338 просмотров
schedule 11.08.2022

Значение некоторого синтаксиса, используемого в учебнике по монадам
Читая этот учебник по монадам, я обнаружил следующее выражение. данные M a = Поднять исключение | Вернуть тип исключения = строка В нем говорится, что a используется как переменная типа и диапазон значений в Raise Exception и...
116 просмотров
schedule 23.02.2024

Как правильно квалифицировать типы для работы с (преобразованными) ST и случайными монадами
Вот мой код: ... import System.Random ( RandomGen, next, split ) import qualified Data.Array.MArray as MAI import Data.Array.ST.Safe( STUArray ) import Control.Monad.ST.Safe(ST) import qualified Control.Monad.Random as CMR import...
79 просмотров
schedule 07.11.2022

Haskell: функция, использующая нотацию do и возвращающая, т.е. целочисленное значение
Я хочу написать функцию, которая считывает некоторые данные, используя getLine , и возвращает, т.е. кортеж (Integer, Integer), но используя do-нотацию. Что-то вроде этого (конечно, это не работает): fun :: (Integer, Integer) fun = do a <-...
2383 просмотров
schedule 13.02.2024

Связывание нескольких аргументов
В Хаскеле есть: (>>=) :: Monad m => m a -> (a -> m b) -> m b Есть функция :(?) bind2 :: Monad m => m a -> m b -> (a -> b -> m c) -> m c
309 просмотров
schedule 12.03.2024

Правильно помеченный AST
Я уже некоторое время пытаюсь создать тегированный AST. Давайте представим проблему: data E a = V a | LitInt Int | LitBool Bool | FooIntBool (E a) (E a) -- er… deriving (Eq,Show) Проблема с этим фрагментом кода для меня...
170 просмотров

Явное отслеживание чистых действий в монаде с побочными эффектами?
Как правило, существует безопасный способ extract из монадического действия, если оно является результатом вызова pure / return . Например. unsafePerformIO (pure 42) не повлияет на мир. Пока я только использую эти монадические операции, я в...
119 просмотров
schedule 04.03.2024

Попробуйте монаду в Java 8
Есть ли встроенная поддержка монады, которая занимается обработкой исключений? Что-то похожее на Try в Scala. Я спрашиваю, потому что мне не нравятся непроверенные исключения.
19242 просмотров
schedule 20.07.2022

Каков тип возврата 5 в Haskell, когда контекст не указан?
В этом вопросе ОП спрашивает, каков тип выражения return 5 и ответ уже был дан в этом вопросе: это общий тип, в чем можно убедиться, набрав :t return 5 в интерпретаторе Haskell: return 5 :: (Num a, Monad m) => m a Конкретная...
655 просмотров
schedule 23.04.2024

Почему scala.util.Success.flatMap (Try.flatMap) снова использует try-catch после применения своего аргумента?
Ниже приведено определение flatMap , взятое из scala.util.Success. final case class Success[+T](value: T) extends Try[T] { def flatMap[U](f: T => Try[U]): Try[U] = try f(value) catch { case NonFatal(e) => Failure(e) } }...
489 просмотров
schedule 30.07.2022

Экземпляр MonadFix для преобразователя монад интерпретатора, сгенерированного FreeT?
У меня есть упрощенная версия стандартного преобразователя монад интерпретатора, сгенерированного FreeT : data InteractiveF p r a = Interact p (r -> a) type Interactive p r = FreeT (InteractiveF p r) p - это "приглашение", а r - это...
204 просмотров
schedule 11.11.2022

Haskell - как сгенерировать следующий ход в игре крестики-нолики с монадой списка
Я реализую игру в крестики-нолики для n * n доски в Haskell, и мне нужно сгенерировать все конфигурации доски, которые я могу получить на следующем шаге. У меня доска определена следующим образом: data Cell = E | X | O...
1377 просмотров
schedule 11.10.2022

Несоответствие типа монады
Я пытаюсь использовать монаду IO в приложении Spock. Следующий код не компилируется: get "api/entities" $ do entities <- loadEntities let e1 : xs = entities text $ note e1 loadEntities имеет тип IO [Entity] Ошибка Couldn't...
78 просмотров
schedule 16.09.2022

Почему мое копирование кода haskell из книги «Функциональное программирование на Haskell» не может быть успешно интерпретировано?
Код выглядит следующим образом: type Parser a = String -> [(a, String)] retrn :: a -> Parser a retrn v = \inp -> [(v, inp)] parse :: Parser a -> String -> [(a, String)] parse p inp = p inp item :: Parser Char item = \inp ->...
100 просмотров
schedule 25.11.2023

Монадический сторож с Либо
Я реализую проверку типов в Haskell. Основной сигнатурой функций проверки типов является judge :: Term -> StateT Context (Either String) Type Если проверка типов не удалась, она возвращает lift $ Left "Something went wrong" ....
1134 просмотров
schedule 19.09.2022

Ошибки ввода при использовании действия ввода-вывода в Haskell
Я только начал изучать Haskell и теперь застрял в работе с операциями ввода-вывода. Вот код. parseDnsMessage :: BG.BitGet DnsMessage recQuery :: BS.ByteString -> String -> IO BS.ByteString resolveName :: [Word8] -> [Word8] ->...
107 просмотров
schedule 13.04.2024

Как распечатать результат State Monad в Haskell?
Можно ли распечатать результат монады состояния в Haskell? Я пытаюсь понять монады состояний, и в книге, которую я следил, предоставляет приведенный ниже код для создания монады состояний, но я борюсь с этой темой, поскольку не могу визуально...
1057 просмотров
schedule 26.09.2022

Рекурсивная привязка F # в вычислительных выражениях и хвостовая рекурсивность
Я пытаюсь понять, как правильно вызывать рекурсивные функции в вычислительных выражениях и не получать исключение переполнения стека. Насколько я понимаю, это довольно известная проблема, но до сих пор не могу понять суть. Может быть, у кого-нибудь...
387 просмотров
schedule 28.06.2022

Используйте Fluture с Ramda
Я использовал Bluebird для выполнения асинхронных задач, но теперь мне нужно делать много пустых / нулевых проверок / ошибок, и я не хочу спускаться по обычному маршруту if Else. Подумываю об использовании монад, но еще не разобрался полностью....
1783 просмотров

Монадическое двойное связывание
Можно ли разрешить y как функцию f и x , если монады N и M односторонние? x :: M (N X) f :: X -> M (N Y) -- pattern matching not allowed, one-way monads implied y :: M (N Y) y = _ Полные определения: data X = X data Y = Y...
69 просмотров
schedule 18.03.2024