First Mozart project: how to start?
Joachim Durchholz
joachim at hact.de
Sun Feb 9 16:29:25 CET 2003
Hi all,
I got the book, installed the docs, ran Emacs... but now I'd like to do
something real, something beyond the prepackaged examples.
I'd like to write a "data entry normalizer". A rough outline of the
project follows.
I don't need the algorithms (thanks, I've been programming pretty hairy
stuff for a few years). What I do need is a list of things to download,
and a list of docs/modules descriptions to read first. It's a small
project, but it's real-world, I have little free time to spare, and all
that, so I'd highly appreciate any advice that will save me hours of
hunting down the relevant stuff.
I have emacs and a slightly outdated version of Mozart/Oz downloaded.
I'm not familiar with emacs though, and the experience with it has
been... well, mildly unpleasurable and unbelievably uncomformable. I'm
pretty sure it's just a question of getting used to it, but learning
both emacs and Mozart at the same time seems like a sure way to end up
in the insane asylum. I will continue on that road, unless somebody can
tell me how to work with Mozart/Oz on Windows.
Project description:
The thing should be a data entry application. (I.e. focus is on
usefulness for keyboard entry, with occasional mouse activity.)
It must have a GUI, and it should be portable across (in descending
priority) Windows, Linux, and MacOS. (I just hope that GTK is up to the
task... or are there useful alternatives? "curses" or something
equivalent would be up to the task as well, but I haven't heard of any -
and even then I'd need a confirmation that I could save some hours of
work by using that library instead of GTK.)
Data entry would consist of lines like
EW-1 2L,3B,4Pf
and the software will convert this to relational rows like (first line
is field names, second line is converted form of input):
Place A L S B Pf Remarks
EW-1 0 2 0 3 4 ""
IOW there is some input parsing and validation involved - nothing too
complicated, but something that lets me specify the syntax and an easy
syntax-to-semantics mapping would be appreciated.
The syntax is simple, something like
line ::= place element {"," element}
element ::= number type {flag}
so something yacc-like might still be overkill.
Validation goes beyond syntax, there are some semantic checks as well
(such as a constraint on the total number of elements per place). (A
future plan is to allow specifying the elements for a place on multiple
lines, i.e. allow multiple lines to add to a single place. This means I
have constraints across multiple input lines - yucky but interesting,
solving this in an elegant fashion will gain extra bonus points *g*.)
Users must be able to scroll through the data that they entered, and to
add corrections. (IOW there are two representations that must be kept in
sync: the input/edit representation for the user, and the relational
representation for further internal processing. "Further internal
processing" means: map the "Place" specifications into coordinates of a
hexagonal grid and print the stuff... nothing that a standard module
will help with, other than the ability to generate Postscript or
something equivalent. Printing is on the "future plans" list though,
I'll be happy if people can enter/edit and dump the whole thing to CSV
format.)
Any responses are appreciated!
Regards,
Joachim
--
This is not an official statement from my employer.
-
Please send submissions to users at mozart-oz.org
and administriva mail to users-request at mozart-oz.org.
The Mozart Oz web site is at http://www.mozart-oz.org/.
Please send bug reports to bugs at mozart-oz.org.
More information about the mozart-users
mailing list