Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Теоретическое доказательство:
- Maybe:
- 1) pure id <*> v = v
- pure id <*> v -> Just id <*> v -> fmap id v -> либо Just (id x) = Just x = v, либо Nothing = Nothing
- 2) pure (.) <*> u <*> v <*> w = u <*> (v <*> w)
- Пусть u, v или w = Nothing. Тогда, и справа, и слева будет Nothing
- Если же нет:
- pure (.) <*> Just x <*> Just y <*> Just z | Just x <*> ((Just y) <*> (Just z))
- Just (.) <*> Just x <*> Just y <*> Just z | Just x <*> (Just (y z)) = Just (x (y z))
- Just ((.) x) <*> Just y <*> Just z |
- Just (x . y) <*> Just z |
- Just ((x y (z))) |
- 3) pure g <*> pure x = pure (g x)
- Just g <*> Just x | Just (g x)
- Just (g x)
- 4) g <*> pure x = pure ($ x) <*> g
- Just gx <*> Just x | Just ($ x) <*> (Just gx)
- Just (gx x) | Just (gx x)
- List:
- 1) pure id <*> v = v
- [id] <*> [a, b, ..] -> [id x | x <- v] -> [id a, id b, ..] -> [a, b, ..]
- 2) pure (.) <*> u <*> v <*> w = u <*> (v <*> w)
- [(.)] <*> u <*> v <*> w | u <*> (v <*> w)
- [x . y | x <- u, y <- v] <*> w | u <*> [y z | y <- v, z <- w]
- [x (y z) | x <- u, y <- v, z <- w] | [x (y z) | x <- u, y <- v, z <- w]
- 3) pure g <*> pure x = pure (g x)
- [g] <*> [x] = [g x]
- 4) g <*> pure x = pure ($ x) <*> g
- [..] <*> [x] | [$ x] <*> g
- [gx x | gx <- g] | [($ x) gx | gx <- g] = [gx x | gx <- g]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement