[Haskell-beginners] Comfortable handling of module hierarchies

Christopher Howard christopher.howard at frigidcode.com
Sat Sep 15 03:23:45 CEST 2012


So, let's say I've got this hierarchy of modules:

Plant
  `-- Vegetable
  |    `-- Celery
  |    `-- Lettuce
  `-- Fruit
       `-- Raspberry
       `-- Apple

What I would like to be able to do is import and use modules like so:

code:
--------
import qualified Plant.Vegetable as V

-- call a function in module Celery
V.Celery.grow
--------

and

code:
--------
import qualified Plant as P

P.Fruit.Raspberry.jam
--------

I tried using connecting modules, which I read about online:

code (Plant.hs):
--------
module Plant ( module Plant.Vegetable
                     , module Plant.Fruit
                     )
import Plant.Vegetable
import Plant.Fruit
--

(And likewise for Plant/Vegetable.hs and Plant/Fruit.hs.) However, this
pools the functions from the sub-modules all into one name space, which
does not allow me to make the sort of function calls I described above.
Although sometime it is okay to have the functions all in one name
space, it doesn't fit the style I'm aiming for, and it can be a real
pain if multiple modules have a function of the same name (e.g., if all
fruits and veggies have a "grow" function). Is it possible to do what
I'm trying to do?

-- 
frigidcode.com
indicium.us


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 551 bytes
Desc: OpenPGP digital signature
URL: <http://www.haskell.org/pipermail/beginners/attachments/20120914/81fac387/attachment.pgp>


More information about the Beginners mailing list