Size: a a a

2021 October 02

P

Purple in ФП
источник

K

Kir in ФП
В хаскелле это
class Functor f where
 fmap :: (a -> b) -> f a -> f b  -- map

class Functor f => Applicative f where
 pure :: a -> f a
 ...

class Applicative m => Monad m where
 bind :: m a -> (a -> m b) -> m b  -- добавить коллбэк


И есть do-синтаксис
main :: IO ()
main = do
 putStrLn "Name?"
 name <- getLine
 putStrLn ("Hello, " ++ name ++ "!")


который разворачивается в
main =
 bind (putStrLn "Name?") (\_ ->
   bind getLine (\name ->
     putStrLn ("Hello, " ++ name ++ "!")))


Что весьма напоминает
let main =
 putStrLn("Name?").then(_ =>
   getLine().then(name =>
     putStrLn("Hello, " + name + "!")))


И почти оно же
async function main() {
 await putStrLn("Name?")
 let name = await getLine()
 putStrLn("Hello, " + name + "!")
}


Так что промисы это вполне себе монады.

Монада - это наличие метода bind/then/flatMap, принимающих коллбэк, реаширующий на результат
источник

K

Kir in ФП
Только вместо bind в хаскелле >>=
источник

P

Purple in ФП
Кхм. Промисы это *не* монады. Наличие функции с определенным именем и сигнатурой не делает промис монадой.
источник

K

Kir in ФП
Я исхожу из предположения, что код на жаваскрипте не будет пытаться делать join и map через then
источник

K

Kir in ФП
Задача была показать человеку монады, а не проверить, насколько js говно
источник

P

Purple in ФП
Но у вас же в сообщении неверное заявление, аж два

> Так что промисы это вполне себе монады.
Промисы это не монады, не удолетворяют Left Identity и Associativity

> Монада - это наличие метода bind/then/flatMap, принимающих коллбэк, реаширующий на результат
А еще следование трем правилам, Promise/Future следует только одному
источник

P

Purple in ФП
Так я не говорю (в данный момент времени) что js говно :)
источник

P

Purple in ФП
Я говорю лишь что их Promise/Future – совсем не монада
источник

P

Purple in ФП
Насколько я помню, там есть библиотека в которой есть аналог промисов который является монадой, Fantasy Land
источник

P

Purple in ФП
источник

K

Kir in ФП
> следует только одному

оно пытается, но жаваскриптеры ж не поймут, если у них map через then отобрать
источник

P

Purple in ФП
Пытается, но не является 🙃
источник

P

Purple in ФП
В Dart, кстати, из Future можно честную монаду сделать, всего шестью строчками
источник

P

Purple in ФП
(из коробки там JS-овский then есть, с таким же поведением)
источник

JS

Jerzy Syrowiecki in ФП
автор, вероятно, не в курсе, что значат слова "по определению"
источник
2021 October 04

T

The Pressbraker in ФП
Тут я так понял сидят спецы по Haskell и Scala ?
источник

AG

Alex Gryzlov in ФП
и коку
источник
2021 October 21

SB

S B in ФП
Сам Эрланг простой, но его экосистема…
источник

SB

S B in ФП
Ты готов страдать ради дедушки?
источник