
Hi, what does this to code rows mean: newtype Probability = P Float newtype Dist a = D {unD :: [(a, Probability)]} newtype definies a new type called Probability. But what does P Float mean? And what is the a in Dist a? What does D {...} mean? Thanks for your help. -- View this message in context: http://www.nabble.com/comprehension-problem-tp23858359p23858359.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.

P Float is the constructor to create a value of this type, similar to data declarations. That is, 0.5 :: Float, P 0.5 :: Probability The {} notation after D creates a record accessor, also similar to data declarations. It's equivalent to making an unD that unwraps the value yourself: newtype Dist a = D { unD :: [(a, Probability)] } is the same as newtype Dist a = D [(a, Probability)] unD :: Dist a -> [(a, Probability)] unD (D x) = x a in Dist a is a type variable, for example you could have Dist Float (containing [(Float, Probability)]), or Dist String (containing [(String, Probability)]) -Ross On Jun 3, 2009, at 4:01 PM, ptrash wrote:
Hi,
what does this to code rows mean:
newtype Probability = P Float newtype Dist a = D {unD :: [(a, Probability)]}
newtype definies a new type called Probability. But what does P Float mean?
And what is the a in Dist a? What does D {...} mean?
Thanks for your help. -- View this message in context: http://www.nabble.com/comprehension-problem-tp23858359p23858359.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Cool, thanks a lot. Ross Mellgren wrote:
P Float is the constructor to create a value of this type, similar to data declarations.
That is, 0.5 :: Float, P 0.5 :: Probability
The {} notation after D creates a record accessor, also similar to data declarations. It's equivalent to making an unD that unwraps the value yourself:
newtype Dist a = D { unD :: [(a, Probability)] }
is the same as
newtype Dist a = D [(a, Probability)]
unD :: Dist a -> [(a, Probability)] unD (D x) = x
a in Dist a is a type variable, for example you could have Dist Float (containing [(Float, Probability)]), or Dist String (containing [(String, Probability)])
-Ross
On Jun 3, 2009, at 4:01 PM, ptrash wrote:
Hi,
what does this to code rows mean:
newtype Probability = P Float newtype Dist a = D {unD :: [(a, Probability)]}
newtype definies a new type called Probability. But what does P Float mean?
And what is the a in Dist a? What does D {...} mean?
Thanks for your help. -- View this message in context: http://www.nabble.com/comprehension-problem-tp23858359p23858359.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- View this message in context: http://www.nabble.com/comprehension-problem-tp23858359p23913380.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.
participants (2)
-
ptrash
-
Ross Mellgren