[Haskell-cafe] comprehension problem

Ross Mellgren rmm-haskell at z.odi.ac
Wed Jun 3 16:27:57 EDT 2009


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 at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe



More information about the Haskell-Cafe mailing list