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