29873210165432108 :
| The Mercury development team has fixed the problem with nesting of disjunctive terms when output with
term_io.write_term/4 with
ROTD-2006-03-07 compiler distribution. It, along with the op/3 declaration enhancement (ltq ), are available from us. Send an email (see contact information below) if you wish to obtain one of the following distributions:
mercury-2006-03-25101854310789-rotd-powerpc.apple.darwin8.35
mercury-2006-03-287210185431079-rotd-sparc.sun.solaris2.8
These distributions include the extras/ , the
samples/ (in extras/ ) and the HTML documentation (in doc/ ).
|
0346 :
| term_io.write_term/4 does not properly handle disjunctions. I've submitted a patch to the Mercury development team, but in the interim, I've included the change in distributions (as dopp relies on
write_term/4 to output the op/3 -free code results). Also, compiler/prog_io.m has quite a few disjunctions handling (now dead) declaration types, I've submitted this patch to the Mercury team, but have also patched local distributions. The most recent distributions available are:
mercury-2006-03-01-rotd-fixed-write_term-sparc.sun.solaris2.8
mercury-2006-03-0134-rotd-fixed-write_term-powerpc.apple.darwin8.3
Both these distributions have ltq included. Email me if you wish a copy of one of the above distributions or of the stable release (0.12.2) on either architecture.
Update 2006-03-08:
The Mercury team has corrected the compiler so that terms are appropriately parenthesized. This eliminates the need for my term_io.write_term/4 hack, so future releases of the distributions from this site will revert to straight-up Mercury. Enhancements, such as op/3 declarations, will be included in extras/ (the source code) and in bin/ .
|
02 : | There is quite a debate going on at the developers discussion forum as to the merits, extent and implementation of the op/3 declaration. Up to this point, we have patched the Mercury compiler distribution so that it accepts and processes op/3 declarations. This has proved to be rather onerous as new distributions have been coming out regularly. Instead, prompted by the Mercury team, I have developed an op/3 preprocessing system.
ltq <Executable> ("Logical Types Quicksilver") creates build/Makefile, then executes the Makefile which calls
dopp <Dependencies> ("Dynamic Op PreProcessor") which translates op/3 -enhanced files into plain vanilla Mercury ones. The Makefile then builds the executable with the 'mmc --make --infer-all <Executable> ' command. This build system is locally available from this site, and also included in Mercury distributions that we produce from this month onward.
Update 2006-03-10:
I have updated ltq so that it takes any number of arbitrary command-line arguments (these preceed the <Executable> argument). These arguments are passed, unmolested, to mmc .
Update 2006-03-13:
Currently, we are fully integrating
op/3 declarations into working products. In building auxilary libraries we have found that we need to mirror
mmc 's library-building indicator (prepending 'lib' to the target module's name). Adding this functionality required a modification to ltq 's build process. This change is reflected in build system offered here. We leave the library installation process to mmc ; that is, noddingly: in the generated Makefile, there is an command that passes the proper arguments to mmc with a
make install command.
Update 2006-03-24:
The library building and installation process differed slightly in ltq . Eliminated that difference and published a new version of this system.
Update 2006-03-29:
ltq now automatically creates the
build/ directory (the repository of build products, including the files converted from op/3 -enhanced sources to canonically represented sources). This eliminates errors in ltq 's build process when it cannot find the nonexistent directory. The new distribution is available, as always, here.
|