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


Как создать неизменяемую очередь
При создании неизменяемой структуры данных нам часто требуется программа, которая содержит некоторое состояние, которое может изменяться во время выполнения. Один из примеров - создание неизменной очереди. В библиотеке scala вы инициализировали неизменяемую очередь следующим образом: val empty = Queue[Int]() Затем вы можете поставить очередь в очередь, которая возвращает новую очередь с обновленным элементом. Вы также можете исключить очередь из очереди, которая возвращает..

Правдивая история обуздания цепочек обещаний с помощью purescript
У меня была большая цепочка обещаний, которая последовательно выполняла кучу проверок смарт-контракта Ethereum в javascript, и это было своего рода болью. Этот код с радостью сделал бы все, что угодно, если бы возврат был опущен, сообщение было заменено на необходимый параметр или просто что угодно. И это очень много кода (611 строк однострочного обещания после однострочного обещания). Мне нужно было исправить это так или иначе. Поскольку я много экспериментировал с purescript, мне было..

Монада ввода-вывода в Javascript - как она соотносится с другими методами?
В этой статье я исследую монады, и в частности монаду ввода-вывода в Javascript (или Typescript). Я хочу выяснить, как он сравнивается с другими подходами, такими как императивная оболочка функционального ядра, внедрение зависимостей и методы, которые мы используем в языках, которые не являются чисто функциональными. Я опишу предмет так, как я его понимаю, и я не претендую на звание эксперта в этом вопросе. Фактически, все это - просто попытка понять, как сделать программы лучше. Если у..

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

scala Iterable # map против Iterable # flatMap
В чем разница между map и flatMap функциями Iterable ?
21565 просмотров
schedule 31.12.2023

Библиотека монад C++
Кто-нибудь знает хорошую библиотеку шаблонов монад на С++. Возможно, тот, который предоставляет некоторые из распространенных монад, которые вы могли бы видеть в Haskell, например, Maybe.
1026 просмотров
schedule 14.02.2024

Хороший способ отслеживать несколько ссылок между функциями в монаде ST?
Я пишу код (сэмплер MCMC Metropolis-Hastings), который будет использовать генератор случайных чисел и на его основе изменять массив и, возможно, другие структуры. Моя первоначальная идея состояла в том, чтобы использовать монаду ST, чтобы я мог...
494 просмотров
schedule 28.02.2024

Как преобразовать данные из IO (String) в String в haskell
Возможный дубликат: функция Haskell типа: IO String- ›String Я читаю некоторые данные из файла с помощью функции readFile , доступной в Haskell. Но эта функция возвращает мне некоторые данные, хранящиеся как IO String . Кто-нибудь...
5723 просмотров
schedule 19.10.2022

Шаблон ввода/вывода Haskell ReaderT Env
У меня есть следующий шаблон, который я делаю довольно часто и хотел бы устранить. Это выглядит примерно так: type Configured = ReaderT Config doSomething :: Configured IO Data doSomething = do getMeta <- asks getMetaData meta <-...
520 просмотров
schedule 19.03.2024

Порядок выполнения с (››=) не такой, как я ожидал
У меня есть серия сетевых запросов, каждый из которых занимает более 10 секунд. Чтобы пользователь знал, что происходит, я даю обновления: main = do putStr "Downloading the first thing... " {- Net request -} putStrLn "DONE"...
233 просмотров
schedule 05.03.2024

как я могу реализовать этот преобразователь монад с продолжением?
мотивация . Я пытаюсь создать преобразователь монад со специальной инструкцией f <||> g , которая означает «повторить весь этот блок, содержащий f <||> g , один раз с f , в следующий раз с g ». Это предназначено для преобразования...
400 просмотров

Функция, похожая на (››=), но возвращающая другую монаду.
Тип (>>=) : (>>=) :: Monad m => m a -> (a -> m b) -> m b Мне нужна функция типа: (Monad m, Monad n) => m a -> (a -> n b) -> n b Эту функцию можно использовать для объединения разных монад. Я...
362 просмотров
schedule 17.11.2023

Как использовать канал с WAI (необработанное тело запроса)
Я использую scotty, который представляет собой оболочку WAI, похожую на синатру. Я хочу получить необработанное тело запроса в виде строки байтов, чтобы я мог проанализировать его как json. Следующее близко. Это похоже на другие вопросы о...
1177 просмотров
schedule 17.09.2022

Какова цель преобразователя IdentityT?
Просматривая пакет трансформеров, я нашел этот монадный преобразователь под названием ИдентификацияT . Хотя я понимаю, как используется монада Identity (например, State — это просто псевдоним для StateT Identity ) и как в целом работают...
491 просмотров
schedule 27.03.2024

Управление стеком монад
Если у меня есть стек монад, скажем, IO , State и Error , и функция, которая использует только IO и Error . Как можно «удалить» среднюю State монаду из стека, чтобы я мог использовать свою функцию? Если бы порядок был IO , Error , State...
342 просмотров
schedule 26.11.2023

Переупаковывать монады любым общим способом?
Имея две монады, Monad m и Monad n , я хотел бы преобразовать m (n a) в n (m a) . Но похоже, что универсального способа нет, потому что и (>>=) , и return имеют дело только с одним типом монады, и хотя (>>=) позволяет извлекать...
442 просмотров
schedule 07.11.2022

Haskell Понимание монад
Просто пытаюсь разобраться с монадами... сейчас просматриваю эту страницу: http://www.haskell.org/haskellwiki/Simple_monad_examples внизу он спрашивает, что эти фрагменты разрешают: Just 0 >>= (\ x -> if (x == 0) then fail "zero"...
289 просмотров
schedule 28.10.2023

Использование монады состояния для скрытия явного состояния
Я пытаюсь написать небольшую игру на Haskell, и нужно передать изрядное количество состояний. Я хочу попытаться скрыть состояние с помощью монады состояния Теперь я столкнулся с проблемой: функции, которые принимают состояние и аргумент, легко...
1051 просмотров

Как преобразовать clojure.contrib.monads для использования с clojurescript?
Я хотел бы использовать библиотеку Clojure Monad clojure.contrib.monads в ClojureScript. Есть ли проверенная реализация, которая работает с ClojureScript, поскольку она не входит в стандартный дистрибутив ClojureScript? (Я предполагаю, что мне,...
671 просмотров
schedule 23.01.2024

Обработка ошибок и монады?
Я пытаюсь понять, как применить идиому Maybe из Haskel. Я читаю http://en.wikibooks.org/wiki/Haskell/Understanding_monads/Maybe , где показано, что поиск в словаре может возвращать Maybe и что это значение передается через оператор >>= ....
170 просмотров
schedule 31.10.2023

Печатать элементы списка в новых строках
Меня просто запутали списки и монады, так что, возможно, мой вопрос неверен или очень наивен. Я видел способ сделать это с помощью mapM_ func здесь : mapM_ print [1, 2, 3, 4] Но я точно не знаю, как это работает, и хочу знать, как я могу...
3097 просмотров
schedule 20.05.2024

Пример большого стека монад
Как сказано в названии, я ищу программу, которая использует преобразователи монад в сочетании с большим стеком монад. Кто-нибудь знает пример из реального мира?
430 просмотров
schedule 18.09.2022

Создание комбинации считывателя и возможно монады (аппликативного функтора)
Что я хотел бы сделать, так это сделать Applicative Functor из монады Reader, которая делает что-то вроде этого: data MyData = Int Int get2Sum :: Reader [Int] Int get2Sum = do myData <- ask let fst2 = take 2 myData case length fst2...
548 просмотров
schedule 07.02.2024

Разница между ленивыми и строгими монадами Haskell (или трансформерами)
При просмотре Hackage большинство монад имеют версии Lazy и Strict. В чем разница? Можете ли вы выделить его несколькими примерами для общих монад (State, Reader, Writer)?
1837 просмотров
schedule 03.11.2023