for review: remove Prolog support
Fergus Henderson
fjh at cs.mu.OZ.AU
Thu Mar 11 05:18:22 AEDT 1999
Hi,
I asked about removing the Prolog support a while ago, and got no
objections, so here is the change to do exactly that.
If anyone has any objections to this, now is the time to
mention them...
--------------------
Estimated hours taken: 1.5
Remove support for NU-Prolog and SICStus Prolog.
The reasons for this are:
(a) We now have a proper working debugger, so we don't need to use
NU-Prolog or SICStus Prolog for debugging.
(b) The Prolog support was only ever a hack, not a proper solution;
Mercury language features like functions or mode reordering
were never supported.
(c) It was a maintenance problem.
configure.in:
bindist/bindist.configure.in:
Delete the autoconf tests for NU-Prolog and SICStus Prolog.
Delete the stuff for generating the NU-Prolog and SICStus Prolog
scripts.
library/Mmakefile:
Delete rules for building NU-Prolog and SICStus Prolog stuff.
library/library.nu.nl.in:
library/*.nu.nl:
library/swi_builtin.m:
library/swi_lib.m:
Delete these files.
scripts/mnc.in:
scripts/mnp.in:
scripts/mnl.in:
scripts/msc.in:
scripts/msl.in:
scripts/msp.in:
Delete these files.
compiler/options.m:
compiler/handle_options.m:
compiler/globals.m:
Delete code for handling the options `--generate-prolog',
`--prolog-dialect', and `--heap-space' (which was used
for NU-Prolog only).
doc/user_guide.texi:
Delete the documentation about the Prolog support.
WORK_IN_PROGRESS:
Delete the mention of the --generate-prolog option.
NEWS:
w3/news/newsdb.inc:
Mention that we've removed the Prolog support.
Index: bindist/bindist.configure.in
===================================================================
RCS file: /home/mercury1/repository/mercury/bindist/bindist.configure.in,v
retrieving revision 1.21
diff -u -r1.21 bindist.configure.in
--- bindist.configure.in 1998/12/22 07:54:12 1.21
+++ bindist.configure.in 1999/03/10 16:41:16
@@ -82,50 +82,6 @@
fi
AC_SUBST(GNU_MAKE)
#-----------------------------------------------------------------------------#
-INSTALL_SICSTUS=
-SICSTUS=
-SP=
-echo "looking for SICStus Prolog..."
-AC_PROGRAMS_CHECK(SP,sp sicstus prolog)
-if test "$SP" != ""; then
- case "`echo 'prolog_flag(version, V, V), write(V), nl, halt.' |
- $SP 2>&1`" in
- SICStus*)
- INSTALL_SICSTUS=install_sicstus
- SICSTUS=sicstus
- ;;
- esac
-fi
-if test "$INSTALL_SICSTUS" = ""; then
- AC_MSG_WARN(SICStus Prolog not found)
-else
- echo "found SICStus Prolog: $SP"
-fi
-AC_SUBST(INSTALL_SICSTUS)
-AC_SUBST(SICSTUS)
-#-----------------------------------------------------------------------------#
-INSTALL_NUPROLOG=
-NUPROLOG=
-NP=
-
-echo "looking for NU-Prolog..."
-AC_PROGRAMS_CHECK(NP,np)
-if test "$NP" != ""; then
- case "`$NP < /dev/null 2>&1`" in
- NU-Prolog*)
- INSTALL_NUPROLOG=install_nuprolog
- NUPROLOG=nuprolog
- ;;
- esac
-fi
-if test "$INSTALL_NUPROLOG" = ""; then
- AC_MSG_WARN(NU-Prolog not found)
-else
- echo "found NU-Prolog: $NP"
-fi
-AC_SUBST(NUPROLOG)
-AC_SUBST(INSTALL_NUPROLOG)
-#-----------------------------------------------------------------------------#
echo "looking for a way to create named pipes..."
save_PATH="$PATH"
@@ -235,8 +191,7 @@
AC_OUTPUT(Makefile scripts/mmc scripts/mprof
scripts/mercury_update_interface scripts/mgnuc scripts/ml
-scripts/mmake scripts/mnc scripts/mnl scripts/mnp scripts/c2init
-scripts/msc scripts/msl scripts/msp scripts/sicstus_conv
+scripts/mmake scripts/c2init scripts/sicstus_conv
scripts/mkfifo_using_mknod scripts/Mmake.vars
scripts/mdb scripts/mdbrc
,
Index: compiler/globals.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/globals.m,v
retrieving revision 1.33
diff -u -r1.33 globals.m
--- globals.m 1998/11/05 03:52:16 1.33
+++ globals.m 1999/03/10 18:01:15
@@ -35,11 +35,6 @@
---> simple
; compact.
-:- type prolog_dialect
- ---> default
- ; nu
- ; sicstus.
-
:- type termination_norm
---> simple
; total
@@ -54,7 +49,6 @@
:- pred convert_gc_method(string::in, gc_method::out) is semidet.
:- pred convert_tags_method(string::in, tags_method::out) is semidet.
:- pred convert_args_method(string::in, args_method::out) is semidet.
-:- pred convert_prolog_dialect(string::in, prolog_dialect::out) is semidet.
:- pred convert_termination_norm(string::in, termination_norm::out) is semidet.
:- pred convert_trace_level(string::in, bool::in, trace_level::out) is semidet.
% the bool should be the setting of the `require_tracing' option.
@@ -64,14 +58,13 @@
% Access predicates for the `globals' structure.
:- pred globals__init(option_table::di, gc_method::di, tags_method::di,
- args_method::di, prolog_dialect::di,
- termination_norm::di, trace_level::di, globals::uo) is det.
+ args_method::di, termination_norm::di, trace_level::di,
+ globals::uo) is det.
:- pred globals__get_options(globals::in, option_table::out) is det.
:- pred globals__get_gc_method(globals::in, gc_method::out) is det.
:- pred globals__get_tags_method(globals::in, tags_method::out) is det.
:- pred globals__get_args_method(globals::in, args_method::out) is det.
-:- pred globals__get_prolog_dialect(globals::in, prolog_dialect::out) is det.
:- pred globals__get_termination_norm(globals::in, termination_norm::out)
is det.
:- pred globals__get_trace_level(globals::in, trace_level::out) is det.
@@ -114,8 +107,8 @@
% io__state using io__set_globals and io__get_globals.
:- pred globals__io_init(option_table::di, gc_method::in, tags_method::in,
- args_method::in, prolog_dialect::in, termination_norm::in,
- trace_level::in, io__state::di, io__state::uo) is det.
+ args_method::in, termination_norm::in, trace_level::in,
+ io__state::di, io__state::uo) is det.
:- pred globals__io_get_gc_method(gc_method::out,
io__state::di, io__state::uo) is det.
@@ -126,9 +119,6 @@
:- pred globals__io_get_args_method(args_method::out,
io__state::di, io__state::uo) is det.
-:- pred globals__io_get_prolog_dialect(prolog_dialect::out,
- io__state::di, io__state::uo) is det.
-
:- pred globals__io_get_termination_norm(termination_norm::out,
io__state::di, io__state::uo) is det.
@@ -184,20 +174,6 @@
convert_args_method("simple", simple).
convert_args_method("compact", compact).
-convert_prolog_dialect("default", default).
-convert_prolog_dialect("nu", nu).
-convert_prolog_dialect("NU", nu).
-convert_prolog_dialect("nuprolog", nu).
-convert_prolog_dialect("NUprolog", nu).
-convert_prolog_dialect("nu-prolog", nu).
-convert_prolog_dialect("NU-Prolog", nu).
-convert_prolog_dialect("sicstus", sicstus).
-convert_prolog_dialect("Sicstus", sicstus).
-convert_prolog_dialect("SICStus", sicstus).
-convert_prolog_dialect("sicstus-prolog", sicstus).
-convert_prolog_dialect("Sicstus-Prolog", sicstus).
-convert_prolog_dialect("SICStus-Prolog", sicstus).
-
convert_termination_norm("simple", simple).
convert_termination_norm("total", total).
convert_termination_norm("num-data-elems", num_data_elems).
@@ -218,22 +194,20 @@
gc_method,
tags_method,
args_method,
- prolog_dialect,
+ unit,
termination_norm,
trace_level
).
globals__init(Options, GC_Method, TagsMethod, ArgsMethod,
- PrologDialect, TerminationNorm, TraceLevel,
+ TerminationNorm, TraceLevel,
globals(Options, GC_Method, TagsMethod, ArgsMethod,
- PrologDialect, TerminationNorm, TraceLevel)).
+ unit, TerminationNorm, TraceLevel)).
globals__get_options(globals(Options, _, _, _, _, _, _), Options).
globals__get_gc_method(globals(_, GC_Method, _, _, _, _, _), GC_Method).
globals__get_tags_method(globals(_, _, TagsMethod, _, _, _, _), TagsMethod).
globals__get_args_method(globals(_, _, _, ArgsMethod, _, _, _), ArgsMethod).
-globals__get_prolog_dialect(globals(_, _, _, _, PrologDialect, _, _),
- PrologDialect).
globals__get_termination_norm(globals(_, _, _, _, _, TerminationNorm, _),
TerminationNorm).
globals__get_trace_level(globals(_, _, _, _, _, _, TraceLevel), TraceLevel).
@@ -321,15 +295,14 @@
%-----------------------------------------------------------------------------%
globals__io_init(Options, GC_Method, TagsMethod, ArgsMethod,
- PrologDialect, TerminationNorm, TraceLevel) -->
+ TerminationNorm, TraceLevel) -->
{ copy(GC_Method, GC_Method1) },
{ copy(TagsMethod, TagsMethod1) },
{ copy(ArgsMethod, ArgsMethod1) },
- { copy(PrologDialect, PrologDialect1) },
{ copy(TerminationNorm, TerminationNorm1) },
{ copy(TraceLevel, TraceLevel1) },
{ globals__init(Options, GC_Method1, TagsMethod1, ArgsMethod1,
- PrologDialect1, TerminationNorm1, TraceLevel1, Globals) },
+ TerminationNorm1, TraceLevel1, Globals) },
globals__io_set_globals(Globals).
globals__io_get_gc_method(GC_Method) -->
@@ -343,10 +316,6 @@
globals__io_get_args_method(ArgsMethod) -->
globals__io_get_globals(Globals),
{ globals__get_args_method(Globals, ArgsMethod) }.
-
-globals__io_get_prolog_dialect(PrologDIalect) -->
- globals__io_get_globals(Globals),
- { globals__get_prolog_dialect(Globals, PrologDIalect) }.
globals__io_get_termination_norm(TerminationNorm) -->
globals__io_get_globals(Globals),
Index: compiler/handle_options.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/handle_options.m,v
retrieving revision 1.70
diff -u -r1.70 handle_options.m
--- handle_options.m 1998/12/09 03:26:21 1.70
+++ handle_options.m 1999/03/10 17:05:36
@@ -129,11 +129,6 @@
{ ArgsMethod0 = string(ArgsMethodStr) },
{ convert_args_method(ArgsMethodStr, ArgsMethod) }
->
- { map__lookup(OptionTable, prolog_dialect, PrologDialect0) },
- (
- { PrologDialect0 = string(PrologDialectStr) },
- { convert_prolog_dialect(PrologDialectStr, PrologDialect) }
- ->
{ map__lookup(OptionTable,
fact_table_hash_percent_full, PercentFull) },
(
@@ -164,7 +159,7 @@
->
postprocess_options_2(OptionTable,
GC_Method, TagsMethod, ArgsMethod,
- PrologDialect, TermNorm, TraceLevel),
+ TermNorm, TraceLevel),
{ Error = no }
;
{ DumpAliasOption = string(DumpAlias) },
@@ -175,7 +170,7 @@
string(DumpOptions), NewOptionTable) },
postprocess_options_2(NewOptionTable,
GC_Method, TagsMethod, ArgsMethod,
- PrologDialect, TermNorm, TraceLevel),
+ TermNorm, TraceLevel),
{ Error = no }
;
{ Error = yes("Invalid argument to option `--hlds-dump-alias'.") }
@@ -189,9 +184,6 @@
;
{ Error = yes("Invalid argument to option `--fact-table-hash-percent-full'\n\t(must be an integer between 1 and 100)") }
)
- ;
- { Error = yes("Invalid prolog-dialect option (must be `sicstus', `nu', or `default')") }
- )
;
{ Error = yes("Invalid args option (must be `simple' or `compact')") }
)
@@ -203,22 +195,16 @@
).
:- pred postprocess_options_2(option_table, gc_method, tags_method,
- args_method, prolog_dialect, termination_norm, trace_level,
+ args_method, termination_norm, trace_level,
io__state, io__state).
-:- mode postprocess_options_2(in, in, in, in, in, in, in, di, uo) is det.
+:- mode postprocess_options_2(in, in, in, in, in, in, di, uo) is det.
postprocess_options_2(OptionTable, GC_Method, TagsMethod, ArgsMethod,
- PrologDialect, TermNorm, TraceLevel) -->
- % work around for NU-Prolog problems
- ( { map__search(OptionTable, heap_space, int(HeapSpace)) } ->
- io__preallocate_heap_space(HeapSpace)
- ;
- []
- ),
+ TermNorm, TraceLevel) -->
{ unsafe_promise_unique(OptionTable, OptionTable1) }, % XXX
globals__io_init(OptionTable1, GC_Method, TagsMethod, ArgsMethod,
- PrologDialect, TermNorm, TraceLevel),
+ TermNorm, TraceLevel),
% --gc conservative implies --no-reclaim-heap-*
( { GC_Method = conservative } ->
Index: compiler/options.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/options.m,v
retrieving revision 1.252
diff -u -r1.252 options.m
--- options.m 1998/12/06 23:44:15 1.252
+++ options.m 1999/03/10 17:03:01
@@ -100,8 +100,6 @@
; trace_decl
; stack_trace_higher_order
; generate_bytecode
- ; generate_prolog
- ; prolog_dialect
; line_numbers
; auto_comments
; show_dependency_graph
@@ -302,7 +300,6 @@
; link_libraries
; link_objects
% Miscellaneous Options
- ; heap_space
; search_directories
; intermod_directories
; use_search_directories_for_intermod
@@ -407,8 +404,6 @@
trace_decl - bool(no),
stack_trace_higher_order - bool(no),
generate_bytecode - bool(no),
- generate_prolog - bool(no),
- prolog_dialect - string("default"),
line_numbers - bool(no),
auto_comments - bool(no),
show_dependency_graph - bool(no),
@@ -644,7 +639,6 @@
]).
option_defaults_2(miscellaneous_option, [
% Miscellaneous Options
- heap_space - int(0),
filenames_from_stdin - bool(no),
search_directories - accumulating(["."]),
intermod_directories - accumulating([]),
@@ -761,9 +755,6 @@
long_option("trace-decl", trace_decl).
long_option("stack-trace-higher-order", stack_trace_higher_order).
long_option("generate-bytecode", generate_bytecode).
-long_option("generate-prolog", generate_prolog).
-long_option("generate-Prolog", generate_prolog).
-long_option("prolog-dialect", prolog_dialect).
long_option("line-numbers", line_numbers).
long_option("auto-comments", auto_comments).
long_option("show-dependency-graph", show_dependency_graph).
@@ -1004,7 +995,6 @@
% misc options
long_option("help", help).
-long_option("heap-space", heap_space).
long_option("search-directory", search_directories).
long_option("intermod-directory", intermod_directories).
long_option("use-search-directories-for-intermod",
@@ -1488,11 +1478,6 @@
"--generate-bytecode",
"\tOutput a bytecode form of the module for use",
"\tby an experimental debugger.",
- "--generate-prolog",
- "\tConvert the program to Prolog. Output to file `<module>.pl'",
- "\tor `<module>.nl' (depending on the dialect).",
- "--prolog-dialect {sicstus,nu}",
- "\tTarget the named dialect if generating Prolog code.",
"-l, --line-numbers",
"\tOutput line numbers in the generated code.",
"\tOnly works with the `-G' and `-P' options.",
@@ -2134,12 +2119,6 @@
options_help_misc -->
io__write_string("\nMiscellaneous Options:\n"),
write_tabbed_lines([
- % "\t-H <n>, --heap-space <n>",
- % "\t\tPre-allocate <n> kilobytes of heap space.",
- % "\t\tThis option is now obsolete. In the past it",
- % "\t\twas used to avoid NU-Prolog's",
- % "\t\t\t""Panic: growing stacks has required shifting the heap""",
- % "\t\tmessage.",
"-I <dir>, --search-directory <dir>",
"\tAdd <dir> to the list of directories to be searched for \n\t\timported modules.",
Index: configure.in
===================================================================
RCS file: /home/mercury1/repository/mercury/configure.in,v
retrieving revision 1.150
diff -u -r1.150 configure.in
--- configure.in 1999/03/05 12:52:18 1.150
+++ configure.in 1999/03/10 16:40:48
@@ -120,47 +120,6 @@
fi
AC_SUBST(GNU_MAKE)
#-----------------------------------------------------------------------------#
-INSTALL_SICSTUS=
-SICSTUS=
-MERCURY_MSG("looking for SICStus Prolog...")
-AC_PROGRAMS_CHECK(SP,sp sicstus prolog)
-if test "$SP" != ""; then
- case "`echo 'prolog_flag(version, V, V), write(V), nl, halt.' |
- $SP 2>&1`" in
- SICStus*)
- INSTALL_SICSTUS=install_sicstus
- SICSTUS=sicstus
- ;;
- esac
-fi
-if test "$INSTALL_SICSTUS" = ""; then
- AC_MSG_WARN(SICStus Prolog not found)
-else
- MERCURY_MSG("found SICStus Prolog: $SP")
-fi
-AC_SUBST(INSTALL_SICSTUS)
-AC_SUBST(SICSTUS)
-#-----------------------------------------------------------------------------#
-INSTALL_NUPROLOG=
-NUPROLOG=
-MERCURY_MSG("looking for NU-Prolog...")
-AC_PROGRAMS_CHECK(NP,np)
-if test "$NP" != ""; then
- case "`$NP < /dev/null 2>&1`" in
- NU-Prolog*)
- INSTALL_NUPROLOG=install_nuprolog
- NUPROLOG=nuprolog
- ;;
- esac
-fi
-if test "$INSTALL_NUPROLOG" = ""; then
- AC_MSG_WARN(NU-Prolog not found)
-else
- MERCURY_MSG("found NU-Prolog: $NP")
-fi
-AC_SUBST(INSTALL_NUPROLOG)
-AC_SUBST(NUPROLOG)
-#-----------------------------------------------------------------------------#
MERCURY_MSG("looking for a way to create named pipes...")
save_PATH="$PATH"
@@ -1848,8 +1807,7 @@
#-----------------------------------------------------------------------------#
AC_OUTPUT(Mmake.common scripts/Mmake.vars scripts/mmc scripts/mprof
scripts/mercury_update_interface scripts/mgnuc scripts/ml
-scripts/mmake scripts/mnc scripts/mnl scripts/mnp scripts/c2init
-scripts/mdb scripts/mdbrc scripts/msc scripts/msl scripts/msp
+scripts/mmake scripts/c2init scripts/mdb scripts/mdbrc
scripts/sicstus_conv scripts/mkfifo_using_mknod bindist/bindist.build_vars
,
for header in $CONFIG_HEADERS ; do
Index: doc/user_guide.texi
===================================================================
RCS file: /home/mercury1/repository/mercury/doc/user_guide.texi,v
retrieving revision 1.158
diff -u -r1.158 user_guide.texi
--- user_guide.texi 1999/03/05 12:52:24 1.158
+++ user_guide.texi 1999/03/10 16:47:01
@@ -82,7 +82,6 @@
* Invocation:: List of options for the Mercury compiler
* Environment:: Environment variables used by the compiler and utilities
* C compilers:: How to use a C compiler other than GNU C
-* Using Prolog:: Building and debugging Mercury programs with Prolog
@ifset aditi
* Using Aditi:: Executing Mercury predicates using the Aditi
deductive database
@@ -161,8 +160,6 @@
As usual, @file{.c} files are C source code,
@file{.h} files are C header files,
@file{.o} files are object code,
- at file{.no} files are NU-Prolog object code, and
- at file{.ql} files are SICStus Prolog object code.
In addition, @file{.pic_o} files are object code files
that contain position-independent code (PIC).
@@ -416,22 +413,6 @@
@xref{Output-level (LLDS -> C) optimization options} for more information
about @samp{--split-c-files}.
- at item @var{main-module}.nu
-Compiles and links @var{main-module} using NU-Prolog.
-
- at item @var{main-module}.nu.debug
-Compiles and links @var{main-module} using NU-Prolog.
-The resulting executable will start up in the NU-Prolog interpreter
-rather than calling main/2.
-
- at item @var{main-module}.sicstus
-Compiles and links @var{main-module} using SICStus Prolog.
-
- at item @var{main-module}.sicstus.debug
-Compiles and links @var{main-module} using SICStus Prolog.
-The resulting executable will start up in the SICStus Prolog interpreter
-rather than calling main/2.
-
@item lib at var{main-module}
Builds a library whose top-level module is @var{main-module}.
This will build a static object library, a shared object library
@@ -2595,13 +2576,13 @@
Output a bytecode form of the module for use
by an experimental debugger.
- at item --generate-prolog
-Convert the program to Prolog. Output to file @file{@var{module}.pl}
-or @file{@var{module}.nl} (depending the the dialect).
-
- at item --prolog-dialect @var{dialect}
-Target the named dialect if generating Prolog code.
-The @var{dialect} should be one of @samp{sicstus}, @samp{nu}.
+ at c @item --generate-prolog
+ at c Convert the program to Prolog. Output to file @file{@var{module}.pl}
+ at c or @file{@var{module}.nl} (depending the the dialect).
+ at c
+ at c @item --prolog-dialect @var{dialect}
+ at c Target the named dialect if generating Prolog code.
+ at c The @var{dialect} should be one of @samp{sicstus}, @samp{nu}.
@item --auto-comments
Output comments in the @file{@var{module}.c} file.
@@ -3715,36 +3696,6 @@
The names of the .init files in the Mercury library.
@sp 1
- at item MERCURY_NU_LIB_DIR
-Directory for the NU-Prolog object files (@file{*.no}) for the
-NU-Prolog Mercury library.
-
- at sp 1
- at item MERCURY_NU_LIB_OBJS
-List of the NU-Prolog object files (@file{*.no}) for the Mercury
-library.
-
- at sp 1
- at item MERCURY_NU_OVERRIDING_LIB_OBJS
-List of the NU-Prolog object files (@file{*.no}) for the Mercury
-library which override definitions given in @samp{MERCURY_NU_LIB_OBJS}.
-
- at sp 1
- at item MERCURY_SP_LIB_DIR
-Directory for the Sicstus-Prolog object files (@file{*.ql}) for the
-Sicstus-Prolog Mercury library.
-
- at sp 1
- at item MERCURY_SP_LIB_OBJS
-List of the Sicstus-Prolog object files (@file{*.ql}) for the Mercury
-library.
-
- at sp 1
- at item MERCURY_SP_OVERRIDING_LIB_OBJS
-List of the Sicstus-Prolog object files (@file{*.ql}) for the Mercury
-library which override definitions given in @samp{MERCURY_SP_LIB_OBJS}.
-
- at sp 1
@item MERCURY_COMPILER
Filename of the Mercury Compiler.
@@ -3942,397 +3893,6 @@
code with @samp{--no-static-ground-terms}.
@end itemize
-
- at node Using Prolog
- at chapter Using Prolog
-
-Earlier versions of the Mercury implementation did not provide
-a Mercury debugger; instead, they provided a way to build Mercury
-programs using a Prolog system, so that you could use the Prolog
-debugger. This chapter documents how to do that.
-Now that we have a native Mercury debugger, the ability to
-build Mercury programs using a Prolog system is probably not
-very useful anymore. So for most purposes this chapter is
-really of historical interest only. We encourage all but
-the most avid of readers to skip the rest of this chapter.
-
-The feasibility of this technique is dependent upon the program
-being written in the intersection of the Prolog and Mercury languages,
-which is possible because the two languages have almost the same syntax.
-The Mercury implementation allows you to run a Mercury program
-using NU-Prolog or SICStus Prolog.
-
-However, there is no point in using a Prolog debugger to track down a bug
-that can be detected statically by the Mercury compiler.
-The command
-
- at example
-mmc -e @var{filename1}.m ...
- at end example
-
-causes the Mercury compiler
-to perform all its syntactic and semantic checks on the named modules,
-but not to generate any code.
-
-In our experience, omitting that step is not wise.
-If you do omit it, you often waste a lot of time
-debugging problems that the compiler could have detected for you.
-
- at menu
-* Using NU-Prolog:: Building and debugging Mercury programs with NU-Prolog
-* Using SICStus:: Building and debugging with SICStus Prolog
-* Controlling printout:: Controlling display of large terms during debugging
-* Prolog hazards:: The hazards of executing Mercury programs using Prolog
- at end menu
-
- at node Using NU-Prolog
- at section Using NU-Prolog
-
-You can compile a Mercury source file using NU-Prolog via the command
-
- at example
-mnc @var{filename1}.m ...
- at end example
-
- at samp{mnc} is the Mercury variant of @samp{nc}, the NU-Prolog compiler.
-It adapts @code{nc} to compile Mercury programs,
-e.g. by defining do-nothing predicates for the various Mercury declarations
-(which are executed by @code{nc}).
-
-Some invocations of @samp{mnc} will result in warnings such as
-
- at example
-Warning: main is a system predicate.
-It shouldn't be used as a non-terminal.
- at end example
-
-Such warnings should be ignored.
-
- at samp{mnc} compiles the modules it is given into NU-Prolog bytecode,
-stored in files with a @file{.no} suffix.
-You can link these together using the command
-
- at example
-mnl -o @var{main-module} @var{filename1}.no ...
- at end example
-
-Ignore any warnings such as
-
- at example
-Warning: main/2 redefined
-Warning: solutions/2 redefined
-Warning: !/0 redefined
- at end example
-
- at samp{mnl}, the Mercury NU-Prolog linker,
-will put the executable (actually a shell script invoking a save file)
-into the file @file{@var{main-module}.nu}.
-This can be executed normally using
-
- at example
-./@var{main-module}.nu @var{arguments}
- at end example
-
-Alternatively, one can execute such programs using @samp{mnp},
-the Mercury version of np, the NU-Prolog interpreter.
-The command
-
- at example
-mnp
- at end example
-
-will start up the Mercury NU-Prolog interpreter.
-Inside the interpreter, you can load your source files
-with a normal consulting command such as
-
- at example
-['@var{filename}.m'].
- at end example
-
-You can also use the @samp{--debug} option to @samp{mnl} when linking.
-This will produce an executable whose entry point is the NU-Prolog interpreter,
-rather than main/2 in your program.
-
-In both cases, you can start executing your program by typing
-
- at example
-r("@var{program-name} @var{arguments}").
- at end example
-
-at the prompt of the NU-Prolog interpreter.
-
-All the NU-Prolog debugging commands work as usual.
-The most useful ones are
-the @code{trace} and @code{spy} commands at the main prompt
-to turn on complete or selective tracing respectively,
-and the @code{l} (leap), @code{s} (skip), and @code{r} (redo)
-commands of the tracer.
-For more information, see the NU-Prolog documentation.
-
-By default the debugger only displays the top levels of terms;
-you can use the @samp{|} command to enter an interactive term browser.
-(Within the term browser, type @samp{h.} for help.)
-See @ref{Controlling printout} for more information on controlling the
-printout of terms.
-
-Also note that in the debugger, we use a version of @code{error/1}
-which fails rather than aborting after printing the ``Software Error:''
-message. This makes debugging easier,
-but will of course change the behaviour after an error occurs.
-
- at node Using SICStus
- at section Using SICStus Prolog
-
-Using SICStus Prolog is similar to using NU-Prolog,
-except that the commands to use are @samp{msc}, @samp{msl}, and
- at samp{msp} rather than @samp{mnc}, @samp{mnl}, and @samp{mnp}.
-
-Due to shortcomings in SICStus Prolog
-(in particular, the lack of backslash escapes in character strings),
-you need to use @samp{sicstus_conv} to convert Mercury @samp{.m} files
-to the @samp{.pl} files that SICStus Prolog expects
-before you can load them into the interpreter.
-The command to use is just
-
- at example
-sicstus_conv @var{filename}.m
- at end example
-
-By default, @samp{msc} compiles files to machine code using
-SICStus Prolog's @samp{fastcode} mode. If space is more important
-than speed, you can use the @samp{--mode compactcode} option,
-which instructs @code{msc} to use SICStus Prolog's @samp{compactcode}
-mode, which compiles files to a bytecode format.
-
- at node Controlling printout
- at section Controlling printout of large terms
-
-You can control the printout of terms shown as the results of queries,
-and as shown by the debugger, to a great extent. At the coarsest level,
-you can limit the depth to which terms are shown, and the number of
-arguments of terms (and the number of elements of lists) to be shown.
-Further, you can ``hide'' some of the arguments of a term, based upon the
-functor of that term. And finally, you can write your own code to print
-out certain kinds of terms in a more convenient manner.
-
- at menu
-* Limiting size:: Limiting Print Depth and Length
-* Hiding terms:: Hiding terms and subterms based upon term functor
-* Customization:: Customizing printout by writing your own printout code
- at end menu
-
- at node Limiting size
- at subsection Limiting print depth and length
-
-You can limit the depth to which terms will be printed. When a term to
-be printed appears at the depth limit, only its name and arity will be
-shown, enclosed in angle brackets, for example @samp{<foo/3>}.
-
-You can also control the number of arguments of terms, and the lengths
-of lists, to be shown. When this length limit is reached, an ellipsis
-mark (@samp{...}) will be printed.
-
-The following predicates control the print depth and length limits.
-
- at example
-set_print_depth(@var{Depth})
- at end example
-Sets the print depth limit to @var{Depth}. If @var{Depth} is less than 0, the
-print depth is unlimited. The default print depth limit is 2.
-
- at example
-print_depth(@var{Depth})
- at end example
-Unifies @var{Depth} with the current print depth limit.
-
- at example
-set_print_length(@var{Length})
- at end example
-Sets the print length limit to @var{Length}. If @var{Length} is less
-than 0, the print length is unlimited.
-
- at example
-print_length(@var{Length})
- at end example
-Unifies @var{Length} with the current print length limit.
-
-
- at node Hiding terms
- at subsection Hiding terms and subterms
-
-Sometimes you will have terms which appear frequently during debugging
-and which tend to fill up the screen with lots of uninteresting text,
-even with depth limits in force. In such cases, you may want to hide
-terms based upon their functor, regardless of their print depth. You
-may also occasionally want to hide just a few of the arguments of a
-term. These predicates allow you to do that.
-
-Note that if the @emph{top level} functor of the term to be printed is
-hidden, its first level arguments will be shown anyway. This is to
-avoid answer substitutions being wholly hidden, and to make it easier to
-use the subterm viewing facility of the SICStus Prolog debugger (using
-the @key{^} command) to view parts of a term.
-
-
- at example
-hide(@var{Spec})
-hide(@var{Spec, Args})
- at end example
-Allows you to elide certain arguments of certain terms, or whole terms,
-based on the functor. @var{Spec} specifies a functor; it must be either
-a @var{Name}@code{/}@var{Arity} term, or just a functor name (in which
-case all arities are specified). @var{Args} specifies which arguments
-of such terms should be hidden. If given, @var{Args} must be a single
-integer or a list of integers specifying which arguments to hide.
-Hidden arguments will be printed as just a hash (@samp{#}) character.
-Alternatively, @var{Args} may be the atom @code{term}, in which case
-only the name and arity of the term are written within angle brackets,
-(e.g., @samp{<foo/3>}). If Args is not specified, it defaults to
- at code{term}.
-
-Hidden arguments are cumulative. That is, new arguments to be hidden are
-added to the set of arguments already hidden. For example, if you hide
-argument 3 of all terms with functor name @samp{foo}, and then hide
-argument 1 of terms with functor @samp{foo/3}, then for @samp{foo/3}
-terms, arguments 1 and 3 will be hidden, while for all other terms with
-functor name @samp{foo}, only argument 3 will be hidden.
-
- at example
-show
-Show(@var{Spec})
-show(@var{Spec, Args})
- at end example
-Undoes the effect of hiding some arguments of terms or whole terms.
- at var{Spec} specifies a functor; it must be either a
- at var{Name}@code{/}@var{Arity} term, or just a functor name (in which
-case all arities are specified). @var{Args} specifies which arguments
-to stop hiding; it must be a list of argument numbers or a single
-argument number. Alternatively, it may be the atom @code{term},
-indicating that no arguments should be hidden (the whole term should be
-shown). @var{Args} defaults to @code{term}. The predicate
- at code{show/0} reenables showing all arguments of all terms.
-
-Note that these predicates will not affect the depth limit of printing.
-Even if you ask to show a term in full, if it appears at the depth limit of
-the term being printed, its arguments will not be shown. If it appears
-below the depth limit, you won't see it at all.
-
-You may use the @code{hide/1,2} and @code{show/2} predicates in concert
-to hide most of the arguments of a term by first hiding all arguments,
-and then explicitly showing the few of interest.
-
- at example
-hidden(@var{Spec, Args})
- at end example
- at var{Spec} is a @var{Name}@code{/}@var{Arity} term, and @var{Args} is a
-list of the argument numbers of terms with that @var{Name} and
- at var{Arity} which are hidden, or the atom @code{term} if the entire term
-is hidden. @var{Arity} may be the atom @code{all}, indicating that the
-specified arguments are hidden for all terms with that @var{Name} and
-any arity. This predicate may be used to backtrack through all the
-predicates which are hidden or have any arguments hidden.
-
-
- at node Customization
- at subsection Customization of printout
-
-Occasionally you will have a term that is important to understand during
-debugging but is shown in an inconvenient manner or may be difficult to
-understand as printed. Traditionally in Prolog, you can define clauses
-for the predicate @code{portray/1} to specify special code to print such
-a term. Unfortunately, this won't work very well with the other
-features of Mercury's printout system. For this you will need to define
-clauses for the predicate @code{portray_term/3}:
-
- at example
-portray_term(@var{Term, DepthLimit, Precedence})
- at end example
-Like the standard Prolog @code{portray/1} hook predicate, this code
-should either fail without printing anything, or succeed after printing
-out Term as the user would like to see it printed. @var{DepthLimit}, if
-greater than or equal to -1, is the number of levels of the subterms of
- at var{Term} that should be printed without being elided. If it is -1,
-then @var{Term} should probably not be printed; only a marker indicating
-what sort of term it is. The standard @code{print_term/3} code will
-print the name and arity of the functor enclosed in angle brackets
-(e.g., <foo/3>) if @code{portray_term/3} fails at this depth level. Be
-careful, though: if @var{DepthLimit} is less than -1, then there should
-be no depth limit. @var{Precedence} is the precedence of the context in
-which the term will be printed; if you wish to write a term with
-operators, then you should parenthesize the printout if @var{Precedence}
-is smaller than the precedence of that operator.
-
-In printing subterms, you should call @code{print_term/3}, described
-below. Note that the @var{DepthLimit} argument passed to portray_term/3 is
-the depth limit for the @emph{subterms} of @var{Term}, so you should
-usually pass this value to @code{print_term/3} for printing subterms
-without decrementing it. Note also that @var{Term} will always be bound
-when @code{portray_term/3} is called, so you needn't worry about
-checking for unbound variables.
-
-Mercury already supplies special-purpose printout code to print out
-lists of character codes as double-quoted strings, and to print out maps
-as @var{Key}@code{->}@var{Value} pairs, surrounded by @samp{MAP@{@}}.
-This code appears in the file @file{portray.nl} in the Mercury library,
-and may serve as a useful example of how to write customized printing
-code.
-
- at example
-print_term(@var{Term, DepthLimit, Precedence})
- at end example
-Print out @var{Term} to the current output stream, limiting print depth
-to @var{DepthLimit}, and parenthesizing the term if its principle
-functor is an operator with precedence greater than @var{Precedence}.
- at code{print_term/3} also respects the current set of hidden functors,
-and uses the user-supplied @code{portray_term/3} hook predicate when it
-succeeds.
-
-
-
-
- at node Prolog hazards
- at section Hazards of using Prolog
-
-There are some Mercury programs which are not valid Prolog programs.
-Programs which make use of the more advanced features of Mercury will
-not work with NU-Prolog or SICStus Prolog.
-In particular, Mercury programs that use functions will generally not
-be valid Prolog programs (with the exception that the basic arithmetic
-functions such as @samp{+}, @samp{-}, etc., will work fine if you use
-Prolog's @samp{is} predicate).
-Also the use of features such as type classes, lambda expressions,
-non-trivial use of the module system, etc. will cause problems.
-
-Also, Mercury will always reorder goals
-to ensure that they are mode-correct
-(or report a mode error if it cannot do so),
-but Prolog systems will not always do so,
-and will sometimes just silently give the wrong result.
-For example, in Mercury the following predicate will usually succeed,
-whereas in Prolog it will always fail.
-
- at example
-:- pred p(list(int)::in, list(int)::out) is semidet.
-p(L0, L) :-
- L \= [],
- q(L0, L).
-
-:- pred q(list(int)::in, list(int)::out) is det.
- at end example
-
-The reason is that in Mercury,
-the test @samp{L \= []} is reordered to after the call to @code{q/2},
-but in Prolog, it executes even though @code{L} is not bound,
-and consequently the test always fails.
-
-NU-Prolog has logical alternatives
-to the non-logical Prolog operations,
-and since Mercury supports both syntaxes,
-you can use NU-Prolog's logical alternatives to avoid this problem.
-However, during the development of the Mercury compiler
-we had to abandon their use for efficiency reasons.
-
-Another hazard is that NU-Prolog does not have a garbage collector.
@contents
@bye
Index: library/Mmakefile
===================================================================
RCS file: /home/mercury1/repository/mercury/library/Mmakefile,v
retrieving revision 1.34
diff -u -r1.34 Mmakefile
--- Mmakefile 1998/09/29 05:10:42 1.34
+++ Mmakefile 1999/03/10 16:38:27
@@ -22,28 +22,10 @@
#-----------------------------------------------------------------------------#
-# Specify which compilers to use to compile the library.
+# Specify which options to use to compile the library.
# Don't change these without good reason - if you want to
# do a temporary change, change ../Mmake.params.
-MNC = MERCURY_NC_BUILTIN="`vpath_find nc_builtin.nl`" \
- $(SCRIPTS_DIR)/mnc
-MNL = MERCURY_NU_LIB_DIR=. \
- MERCURY_NU_LIB_OBJS="`vpath_find $(library.nos) \
- $(NU_LIBRARY_NOS)`" \
- MERCURY_NU_OVERRIDING_LIB_OBJS="$(NU_OVERRIDING_LIBRARY_NOS)" \
- MERCURY_NU_DEBUG_LIB_OBJS="$(NU_DEBUG_LIBRARY_NOS)" \
- $(SCRIPTS_DIR)/mnl -v
-
-MSC = MERCURY_SICSTUS_COMPILER=./sicstus_compile $(SCRIPTS_DIR)/msc
-MSL = MERCURY_SP_LIB_DIR=. \
- MERCURY_SICSTUS_PROLOG=./sicstus_saved_state \
- MERCURY_SP_LIB_OBJS="`vpath_find $(qls_subdir)sp_builtin.ql \
- $(library.qls) $(NU_LIBRARY_QLS) \
- $(qls_subdir)portray.ql`" \
- MERCURY_SP_OVERRIDING_LIB_OBJS="$(NU_OVERRIDING_LIBRARY_QLS)" \
- $(SCRIPTS_DIR)/msl
-
ifeq ($(LIBRARY_INTERMODULE),yes)
INTERMODULE_OPTS = --transitive-intermodule-optimization
@@ -120,39 +102,14 @@
#-----------------------------------------------------------------------------#
-NU_LIBRARY_NLS = \
- io.nu.nl require.nu.nl std_util.nu.nl string.nu.nl term_io.nu.nl \
- int.nu.nl float.nu.nl char.nu.nl mercury_builtin.nu.nl library.nu.nl \
- store.nu.nl
-NU_OVERRIDING_LIBRARY_NLS = map.nu.nl assoc_list.nu.nl array.nu.nl
-NU_DEBUG_LIBRARY_NLS = portray.nl debug.nl error.nl
-
-NU_LIBRARY_NOS = $(NU_LIBRARY_NLS:%.nl=$(nos_subdir)%.no)
-NU_OVERRIDING_LIBRARY_NOS = $(NU_OVERRIDING_LIBRARY_NLS:%.nl=$(nos_subdir)%.no)
-NU_DEBUG_LIBRARY_NOS = $(NU_DEBUG_LIBRARY_NLS:%.nl=$(nos_subdir)%.no)
-
-NU_LIBRARY_QLS = $(NU_LIBRARY_NLS:%.nl=$(qls_subdir)%.ql) \
- $(qls_subdir)sp_lib.ql
-NU_OVERRIDING_LIBRARY_QLS = $(NU_OVERRIDING_LIBRARY_NLS:%.nl=$(qls_subdir)%.ql)
-
-#-----------------------------------------------------------------------------#
-
# targets
.PHONY: all
-all : mercury nuprolog sicstus
+all : mercury
.PHONY: mercury
mercury : all-ints lib_std
-.PHONY: nuprolog
-nuprolog : all-ints library.nu library.nu.debug \
- $(library.nos) $(NU_LIBRARY_NOS) \
- $(NU_OVERRIDING_LIBRARY_NOS) nc_builtin.nl
-
-.PHONY: sicstus
-sicstus : all-ints sicstus_compile library.sicstus.debug
-
#-----------------------------------------------------------------------------#
.PHONY: depend
@@ -188,13 +145,6 @@
#-----------------------------------------------------------------------------#
-library.nu.nl: library.nu.nl.in ../VERSION ../Mmake.common
- sed -e 's/@VERSION@/$(VERSION)/g' \
- -e 's/@FULLARCH@/$(FULLARCH)/' \
- library.nu.nl.in > library.nu.nl
-
-#-----------------------------------------------------------------------------#
-
tags : $(MTAGS) $(library.ms)
$(MTAGS) $(library.ms)
@@ -244,25 +194,6 @@
#-----------------------------------------------------------------------------#
-# we need to add some manual dependencies, since the
-# automatic dependencies assume that the library
-# isn't part of the application, but in this case it is.
-
-library.nu library.nu.debug: $(NU_LIBRARY_NOS) $(NU_OVERRIDING_LIBRARY_NOS)
-library.sicstus library.sicstus.debug: $(qls_subdir)sp_builtin.ql \
- $(NU_LIBRARY_QLS) $(NU_OVERRIDING_LIBRARY_QLS)
-
-library.nu.debug: $(nos_subdir)error.no $(nos_subdir)debug.no \
- $(nos_subdir)portray.no
-library.sicstus library.sicstus.debug: $(qls_subdir)portray.ql
-
-sp_builtin.ql $(library.qls) $(NU_LIBRARY_QLS) $(NU_OVERRIDING_LIBRARY_QLS) \
-$(qls_subdir)portray.ql: sicstus_compile
-
-$(library.nos) $(NU_LIBRARY_NOS) $(NU_OVERRIDING_LIBRARY_NOS) \
- $(nos_subdir)error.no $(nos_subdir)debug.no $(nos_subdir)portray.no: \
- nc_builtin.nl
-
# Ensure we recompile library__version if VERSION is changed.
$(os_subdir)library.o \
$(os_subdir)library.pic_o \
@@ -270,43 +201,8 @@
#-----------------------------------------------------------------------------#
-sicstus_saved_state:
- echo "save('$@')." | $(SP)
-
-sicstus_compile: sp_builtin.pl sicstus_saved_state
- echo "\
-on_exception(Error, ( \
- /* if we are using Sicstus 3, we need to turn off */ \
- /* character escapes */ \
- ( prolog_flag(argv,_) -> \
- prolog_flag(character_escapes, _, off) \
- ; \
- true \
- ), \
- ( prolog_flag(compiling, _, fastcode) -> true ; true ), \
- compile(sp_builtin), \
- garbage_collect, \
- save('$@', 1), \
- ( prolog_flag(argv,Args) -> true ; unix(argv(Args)) ), \
- ( Args = [CompileMode|Files] -> \
- ( prolog_flag(compiling, _, CompileMode) -> true ; true ), \
- fcompile(Files) \
- ; \
- true \
- ) \
-), print_message(error, Error)), halt ; halt. \
- " | ./sicstus_saved_state
-
-#-----------------------------------------------------------------------------#
-
-# We need to clean up the .no and .ql files for *.nu.nl, etc.
-
-clean:
- rm -f $(nos_subdir)*.no $(qls_subdir)*.ql
-
realclean:
rm -f lib$(STD_LIB_NAME).a lib$(STD_LIB_NAME).so $(STD_LIB_NAME).init
- rm -f sicstus_saved_state sicstus_compile sp_builtin.pl
rm -f tags
#-----------------------------------------------------------------------------#
@@ -322,10 +218,10 @@
# case LIBRARY_INTERMODULE != yes.
.PHONY: install
-install: install_mercury $(INSTALL_SICSTUS) $(INSTALL_NUPROLOG)
+install: install_mercury
.PHONY: install_all
-install_all: install_mercury install_nuprolog install_sicstus
+install_all: install_mercury
.PHONY: install_mercury
install_mercury: install_ints install_init install_library
@@ -379,43 +275,6 @@
cp `vpath_find library.split.a` \
$(INSTALL_MERC_LIB_DIR)/lib$(STD_LIB_NAME).a
-.PHONY: install_nuprolog
-install_nuprolog: install_library_nu install_interpreter_nu
-
-.PHONY: install_library_nu
-install_library_nu: $(library.nos) $(NU_LIBRARY_NOS) \
- $(NU_OVERRIDING_LIBRARY_NOS) \
- $(nos_subdir)error.no $(nos_subdir)debug.no \
- $(nos_subdir)portray.no nc_builtin.nl
- [ -d $(INSTALL_NU_DIR) ] || mkdir -p $(INSTALL_NU_DIR)
- cp `vpath_find nc_builtin.nl` $(INSTALL_NU_DIR)
- [ -d $(INSTALL_NU_ARCH_DIR) ] || mkdir -p $(INSTALL_NU_ARCH_DIR)
- cp `vpath_find $(library.nos) $(NU_LIBRARY_NOS) \
- $(NU_OVERRIDING_LIBRARY_NOS) \
- $(nos_subdir)error.no $(nos_subdir)debug.no \
- $(nos_subdir)portray.no` $(INSTALL_NU_ARCH_DIR)
-
-.PHONY: install_interpreter_nu
-install_interpreter_nu: library.nu
- [ -d $(INSTALL_NU_ARCH_DIR) ] || mkdir -p $(INSTALL_NU_ARCH_DIR)
- sed "s^`pwd`^$(INSTALL_NU_ARCH_DIR)^g" `vpath_find library.nu` \
- > $(INSTALL_NU_ARCH_DIR)/library.nu
- -chmod +x $(INSTALL_NU_ARCH_DIR)/library.nu
- cp `vpath_find library.nu.save` $(INSTALL_NU_ARCH_DIR)
-
-.PHONY: install_sicstus
-install_sicstus: install_interpreter_sicstus install_sicstus_compile
-
-.PHONY: install_interpreter_sicstus
-install_interpreter_sicstus: library.sicstus.debug
- [ -d $(INSTALL_SP_ARCH_DIR) ] || mkdir -p $(INSTALL_SP_ARCH_DIR)
- cp `vpath_find library.sicstus.debug` $(INSTALL_SP_ARCH_DIR)
-
-.PHONY: install_sicstus_compile
-install_sicstus_compile: sicstus_compile
- [ -d $(INSTALL_SP_ARCH_DIR) ] || mkdir -p $(INSTALL_SP_ARCH_DIR)
- cp `vpath_find sicstus_compile` $(INSTALL_SP_ARCH_DIR)
-
else
.PHONY: install
@@ -444,30 +303,6 @@
.PHONY: install_split_library
install_split_library:
- echo "Can't do make install without LIBRARY_INTERMODULE=yes"
-
-.PHONY: install_nuprolog
-install_nuprolog:
- echo "Can't do make install without LIBRARY_INTERMODULE=yes"
-
-.PHONY: install_library_nu
-install_library_nu:
- echo "Can't do make install without LIBRARY_INTERMODULE=yes"
-
-.PHONY: install_interpreter_nu
-install_interpreter_nu:
- echo "Can't do make install without LIBRARY_INTERMODULE=yes"
-
-.PHONY: install_sicstus
-install_sicstus:
- echo "Can't do make install without LIBRARY_INTERMODULE=yes"
-
-.PHONY: install_interpreter_sicstus
-install_interpreter_sicstus:
- echo "Can't do make install without LIBRARY_INTERMODULE=yes"
-
-.PHONY: install_sicstus_compile
-install_sicstus_compile:
echo "Can't do make install without LIBRARY_INTERMODULE=yes"
endif
cvs diff: library/array.nu.nl was removed, no comparison available
cvs diff: library/assoc_list.nu.nl was removed, no comparison available
cvs diff: library/char.nu.nl was removed, no comparison available
cvs diff: library/float.nu.nl was removed, no comparison available
cvs diff: library/int.nu.nl was removed, no comparison available
cvs diff: library/io.nu.nl was removed, no comparison available
cvs diff: library/library.nu.nl.in was removed, no comparison available
cvs diff: library/map.nu.nl was removed, no comparison available
cvs diff: library/mercury_builtin.nu.nl was removed, no comparison available
cvs diff: library/nc_builtin.nl was removed, no comparison available
cvs diff: library/require.nu.nl was removed, no comparison available
cvs diff: library/sp_builtin.nl was removed, no comparison available
cvs diff: library/sp_lib.nl was removed, no comparison available
cvs diff: library/std_util.nu.nl was removed, no comparison available
cvs diff: library/store.nu.nl was removed, no comparison available
cvs diff: library/string.nu.nl was removed, no comparison available
cvs diff: library/swi_builtin.m was removed, no comparison available
cvs diff: library/swi_lib.m was removed, no comparison available
cvs diff: library/term_io.nu.nl was removed, no comparison available
cvs diff: scripts/mnc.in was removed, no comparison available
cvs diff: scripts/mnl.in was removed, no comparison available
cvs diff: scripts/mnp.in was removed, no comparison available
cvs diff: scripts/msc.in was removed, no comparison available
cvs diff: scripts/msl.in was removed, no comparison available
cvs diff: scripts/msp.in was removed, no comparison available
Index: WORK_IN_PROGRESS
===================================================================
RCS file: /home/mercury1/repository/mercury/WORK_IN_PROGRESS,v
retrieving revision 1.10
diff -u -r1.10 WORK_IN_PROGRESS
--- WORK_IN_PROGRESS 1998/11/05 08:55:44 1.10
+++ WORK_IN_PROGRESS 1999/03/10 18:07:28
@@ -61,10 +61,6 @@
that generates bytecode. The bytecode generator is basically
complete, but we don't have a bytecode interpreter.
-* There is a `--generate-prolog' option for a new back-end
- that generates Prolog code.
- Not very much progress has really been made on this.
-
* There is a `--high-level-c' option, for a new back-end
that generates C code but at a much higher level than the
current back-end.
Index: NEWS
===================================================================
RCS file: /home/staff/zs/imp/mercury/NEWS,v
retrieving revision 1.133
diff -u -u -r1.133 NEWS
--- NEWS 1999/03/07 14:02:28 1.133
+++ NEWS 1999/03/10 18:13:10
@@ -15,3 +15,8 @@
See the "Interactive query commands" subsection of the "Debugger commands"
section of the "Debugging" chapter of the Mercury User's Guide for details.
+* We've removed the support for using a Prolog debugger on Mercury programs.
+
+ Now that we have a working Mercury debugger, there's no longer any need to
+ use a Prolog debugger for debugging Mercury code.
+
Index: w3/news/newsdb.inc
===================================================================
RCS file: /home/staff/zs/imp/w3/news/newsdb.inc,v
retrieving revision 1.22
diff -u -u -r1.22 newsdb.inc
--- newsdb.inc 1999/03/07 14:02:35 1.22
+++ newsdb.inc 1999/03/10 18:14:54
@@ -17,6 +17,12 @@
*/
$newsdb = array(
+"11 Mar 1999" => array("Prolog debuggers no longer supported",
+
+"We've removed the support for using a Prolog debugger on Mercury programs.
+Now that we have a working Mercury debugger, there's no longer any need to
+use a Prolog debugger for debugging Mercury code.
+"),
"8 Mar 1999" => array("Interactive queries",
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh> | of excellence is a lethal habit"
PGP: finger fjh at 128.250.37.3 | -- the last words of T. S. Garp.
More information about the developers
mailing list