Публикации по теме '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 просмотров
schedule
09.03.2024
Функция, похожая на (››=), но возвращающая другую монаду.
Тип (>>=) :
(>>=) :: 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 просмотров
schedule
24.02.2024
Как преобразовать 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