
On 06/06/2011 02:57 AM, Yitzchak Gale wrote:
Generally, we don't start out with a type class. Type classes are great for the special situations in which they are needed (although you can do pretty well without them even then), but first let's get the basic concepts.
Perhaps a model is just a function:
type Model a = Ord a => Set a -> [a] -> ProbDist a
or something like that.
Erm... yeah, actually. But... this prevents me from storing more information in a Model in the future. While I don't really anticipate needing too (I can see this function covering all likely use cases), it does seem sorta restrictive.
Having that working, I'm trying to estimate the information entropy of a model
entropy :: (Model m) => m -> Double Perhaps just a function:
entropy :: Model a -> Double
I still don't know enough details about what you're doing, so my types are probably off. But I hope you get the idea.
No, your types are right.
If that's not general enough, you may introduce more functions, or some data types. Those give you a huge amount of power - remember that data types can take multiple type parameters (without any GHC extension), they can have functions as their parameters, etc.
Or, perhaps you'll even get to the point where you'll need a type class, but that's pretty far down the road, and what you would need it for is very different than what a class is in OOP - they are different concepts.
Oh, I understand the difference between a class and a typeclass. It's the difference between an interface and a typeclass that I apparently haven't grasped. Thanks.
Hope this helps, Yitz