Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Haskell has one of the best namespace/module systems of any language I've ever seen. It doesn't 'leak' these names; they're just the names of the data constructors, they're supposed to be visible. If you need to control access, use the module system.

I think it's perfectly legitimate for examples of particular features to omit other features (like modules, in this case).



> Haskell has one of the best namespace/module systems of any language I've ever seen. It doesn't 'leak' these names; they're just the names of the data constructors, they're supposed to be visible. If you need to control access, use the module system.

If I have to use modules to hide distinguish tree leaves from other leaves, I'm using modules to do what I get from classes in other languages. Since those languages also benefit from modules ....

> I think it's perfectly legitimate for examples of particular features to omit other features (like modules, in this case).

I agree that any specific example should be targetted. My point is that none of the Haskell examples that I've seen address large programs.


I mean... you're right, you are using modules to do what you get from classes in other languages. So what? You say this like it's a bad thing, it's not, it's just how this particular problem is solved in Haskell. Different != Horrible. I would argue it's actually a little bit more elegant, in that it takes a problem (namespacing) and solves it one way (modules), rather than having some hybrid package/class system.

I'm interested to see the examples you've seen for other languages that do address large programs. I've personally not come across many "How to write Firefox in Python"-style tutorials.


> I mean... you're right, you are using modules to do what you get from classes in other languages. So what?

My point is that languages that have classes also seem to need modules. Do haskell's modules address the problems that addressed by the combination of classes and modules in other languages? Does Haskell somehow avoid those problems? Is there some other mechanism?

> I'm interested to see the examples you've seen for other languages that do address large programs.

Examples of modules can be trivial yet demonstrate why modules might be useful for large programs.


Haskell isn't object-oriented, so there aren't any little namespaces (classes) running around that themselves need to occupy a namespace (package). So modules are enough.

The Haskell wiki entry on modules is short, pretty complete, and has plenty of examples:

http://en.wikibooks.org/wiki/Haskell/Modules




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: