D•
Size: a a a
D•
D•
MP
PP
AK
succeed x |> andThen f === f x
2. Right identityx |> andThen succeed === x
3. Associativity(x |> andThen f) |> andThen g
===
x |> andThen (\v -> f v |> andThed g)
x,
а и succeed x
и fail smth.
В законах монад в этих пунктах указано m,
в отличие от a
в первом, и подразумевается, что это сама монада, а не просто значение. AK
x |> andThen Just === Just x
b) Just x |> andThen (\_ -> Nothing) === Nothing
c) Just x |> andThen f === Just <| f x
2. Right identity|> andThen Just === Just x
b)
Nothing |> andThen Just ===
Nothing
3. Associativity(Just x |> andThen f) |> andThen g
===
Just x |> andThen (\v -> f v |> andThen g)
b) (Nothing |> andThen f) |> andThen g
===
Nothing |> andThen (\v -> f v |> andThen g)
AK
return
в Хаскеле — это и Just
и succeed
и Ok
и ..., в зависимости от контекста текущей монады, и законы крутятся вокруг него. В Эльме такой абстракции нет, поэтому законы выглядят абсурдно и надо их выражать для каждой монады.AK
andThen
и с map,
по крайней мере в ядре и у большинства типов из большинства библиотек :)AP
x,
а и succeed x
и fail smth.
В законах монад в этих пунктах указано m,
в отличие от a
в первом, и подразумевается, что это сама монада, а не просто значение. AP
AP
return
в Хаскеле — это и Just
и succeed
и Ok
и ..., в зависимости от контекста текущей монады, и законы крутятся вокруг него. В Эльме такой абстракции нет, поэтому законы выглядят абсурдно и надо их выражать для каждой монады.AP
AP
AK
x
означает любого слоника, а не только голубого». Нелогично. x
означает не только голубого слоника (но и розового), то голубой слоник там точно имеет все права быть. А также розовый.AK
AP
AP
x >>= f
содержит сильно меньше визуального шума, чем x |> Task.andThen f
, но чего уж теперь поделатьAP
AK
AK