Newbie Design Question
Thomas L. Bevan
thomas_bevan@toll.com.au
Tue, 5 Aug 2003 09:46:35 +0000
=2D----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I don't see that the contibutors files are fundementally different.
=2D From what I understand, it should be possible to write a=20
generic function,
importCSV :: FilePath -> IO [ (String,String) ]
where the 1st value is a field name and the 2nd the value extracted from=20
the file.
As for the mapping to XML, I would suggest using HaXml and writing a=20
set of functions that write the value for a field into the correct place.
These could then be indexed in another tuple list of type,=20
[(String, String -> CFilter)]
Then draw it all together with a liberal use of map and fold.
Tom
On Mon, 4 Aug 2003 10:05 pm, Tanton Gibbs wrote:
> Haskellers,
>
> I'm currently working on my first Haskell program. I really like the
> language so far, though it has been hard to break the OO frame of mind.
> Normally, I'm a C++/Perl programmer, but I have really enjoyed the
> type-safety of Haskell over Perl as well as the Hugs interpreter over a
> make cycle. Since execution time is not important, I haven't found any
> issues with using Hugs.
>
> Now, on to my problem. Our company uses XML to describe our processes.=20
> I'm writing a DSL in Haskell that will print that XML out. I've done most
> of it, but now I'm describing the I/O in the XML. Basically, we have fil=
es
> come in in various formats from various file contributors and we use a
> mapping program to map the fields to the right spots in the XML. So, for
> example, one contributor could have the following layout:
>
> Field Name Start Pos Length
> First Name, 1, 10
> Last Name, 11, 10
>
> and another contributor could have them in exactly the opposite order.
> Furthermore, some contributors may have fields that others don't (for
> example: DOB).
>
> I'm now trying to come up with a way to map this information into Haskell
> dynamically. It would be trivial to create a module for each Contributor
> and then import all the modules. However, we have hundreds of contributo=
rs
> and it would be a pain to have to change and re-release the program every
> time we added a new contributor. Therefore, I need someway to take this
> information and map it into my Haskell structures. I have come up with t=
wo
> options. One would be to let Haskell dynamically import a contributor
> module (but I don't think that is currently possible); the other would be
> to use a configuration file and have the user specify the information
> through it. Is there a standard Config file module? Is there any other
> way to do this that I missed?
>
> Thanks in advance,
> Tanton Gibbs, Ph.D.
> Technical Architect
> Abilitec Knowledge Base
> Acxiom Corporation
> Conway, AR 72034
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
=2D----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)
iD8DBQE/L3z7Yha8TWXIQwoRAmhJAJ4hLxqRC7DmTE4PYRAG5mzKS7/Z5gCgj/QF
1zyl21u0fEMwkJeUWy8QVxs=3D
=3Dfjzf
=2D----END PGP SIGNATURE-----