Pattern synonyms and record fields for Cont, Writer, Reader, State, ...

This will look like the original definitions [1]
newtype State s a = State { runState :: s -> (a, s) }
before they became type synonyms
type State s = StateT s Identity
by defining pattern synonyms
pattern State :: (s -> (a, s)) -> State s a pattern State {runState} <- S.runState -> runState where State a = state a
Trac ticket #12767 for further information. [2] [1] http://book.realworldhaskell.org/read/monads.html#id643643 [2] https://ghc.haskell.org/trac/ghc/ticket/12767

This sounds fantastic! I think it is very important to provide sufficient
documentation in the source to allow newish users who click through to
understand as much as they need.
On Nov 20, 2016 12:47 PM, "Baldur Blöndal"
This will look like the original definitions [1]
newtype State s a = State { runState :: s -> (a, s) }
before they became type synonyms
type State s = StateT s Identity
by defining pattern synonyms
pattern State :: (s -> (a, s)) -> State s a pattern State {runState} <- S.runState -> runState where State a = state a
Trac ticket #12767 for further information. [2]
[1] http://book.realworldhaskell.org/read/monads.html#id643643 [2] https://ghc.haskell.org/trac/ghc/ticket/12767
_______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries

This [1] was posted 5 hours ago
[1]
https://www.reddit.com/r/haskellquestions/comments/5ebepq/perhaps_i_meant_on...
2016-11-20 17:56 GMT+00:00 David Feuer
This sounds fantastic! I think it is very important to provide sufficient documentation in the source to allow newish users who click through to understand as much as they need.
On Nov 20, 2016 12:47 PM, "Baldur Blöndal"
wrote: This will look like the original definitions [1]
newtype State s a = State { runState :: s -> (a, s) }
before they became type synonyms
type State s = StateT s Identity
by defining pattern synonyms
pattern State :: (s -> (a, s)) -> State s a pattern State {runState} <- S.runState -> runState where State a = state a
Trac ticket #12767 for further information. [2]
[1] http://book.realworldhaskell.org/read/monads.html#id643643 [2] https://ghc.haskell.org/trac/ghc/ticket/12767
_______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
participants (2)
-
Baldur Blöndal
-
David Feuer