[mercury-users] Questions

Ralph Becket rbeck at microsoft.com
Fri Mar 24 02:03:32 AEDT 2000

Hi Gustavo,

> 1. What kind of problems, in your opinion, are more suitable 
> to be solved 
> with Mercury (wrt Prolog and others Functional and Logic Programming 
> languages)?

These days I use Mercury for just about everything bar very grotty
text mangling (I use Awk etc.)  I don't think pure Mercury is up to
programs that really need to do some low-level optimisations (e.g.
fast manipulation of large arrays of bytes is hard), partly because
you can't tell the compiler "just trust me to handle initialisation".
There's a good argument to say that this is just the sort of
thing the C interface is there for.

> 2. Please describe what tools you use for developing software 
> systems in Mercury, for each step below:
>    - Design
>    - Specification
Pencil, paper, whiteboard, beer, reference materials.

>    - Construction
Vim, mmake.

>    - Program Analysis
The mercury compiler and profiler.

>    - Maintenance
The above + CVS.

> 3. What kind of specifications you use?
>    * Formal
>    * Semiformal
>    * Informal
>    * I don't use, My program is a specification
>    * Another (?)
It depends upon the problem.  Some things are "just obvious" and don't
need a spec.  Other things I tend to work out as a set of logical
relations that I can then translate pretty much directly into Mercury.
Pain happens when I confuse a real problem with something that's
"just obvious".

> 4. Do you use some program verification method when you build 
> your program?
>    * I don't use, I trust in my program (logic, isn't it?)
>    * I don't use, I debug when I have problems
>    * I use, but rarely
>    * I use frequently

Nine times out of ten, once the compiler accepts my program it does
what I intended.  I tend to design in a fairly formal style, which
helps, but I rarely do more than sketch proofs.

> 5. What helps do you use to write your programs? This is not exclusive, so

> you can mark two or more. If you can explain a little, so much better.
>    * A good text editor (vi, emacs)

>    * Use of programming patterns
The standard library is very good.  Extensive use of type classes in version
2 will make things even easier, although I very rarely use them at the
moment (I find generalising to type classes is best done after one 
understands the problem/design space).

>    * Use of codification standards
I have a pretty strict coding style.

>    * Use of programming methodology (which?)
See 2 & 3 above.

>    * Another (?)
Talking problems through with colleagues over a pint.

> 6. What degree of interaction you would like to see in a tool 
> for Mercury program development?
>    * High (GUI integrating several tools and supporting all 
> programming tasks)
Not bothered.  In fact, I prefer collections of good tools
(mmake, mmc, vi, mtags etc.) to integrated environments where
I can't tell whether any changes done outside the IDE will
screw up its secret bookkeeping.

>    * Medium (e.g. Emacs mode with support to some programming 
> tasks and independent automatic tools)
>    * Low (Simple text editor and independent automatic tools)
As I say, I use vim, mtags and mmake and I'm a happy bunny.


mercury-users mailing list
post:  mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-users-request at cs.mu.oz.au Message: subscribe

More information about the users mailing list