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