Index: src/CompilationState.cc
===================================================================
--- src/CompilationState.cc	(revision e3bc51c60b9c9b6ea0e677c0358ab2c534e41a95)
+++ src/CompilationState.cc	(revision bcd74f39489d76f21240e6f14a5e7aae3956aa09)
@@ -27,4 +27,5 @@
 	nopreludep = false,
 	genproto = false,
+	deterministic_output = false,
 	nomainp = false,
 	parsep = false,
Index: src/CompilationState.h
===================================================================
--- src/CompilationState.h	(revision e3bc51c60b9c9b6ea0e677c0358ab2c534e41a95)
+++ src/CompilationState.h	(revision bcd74f39489d76f21240e6f14a5e7aae3956aa09)
@@ -28,4 +28,5 @@
 	nopreludep,
 	genproto,
+	deterministic_output,
 	nomainp,
 	parsep,
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision e3bc51c60b9c9b6ea0e677c0358ab2c534e41a95)
+++ src/Parser/parser.yy	(revision bcd74f39489d76f21240e6f14a5e7aae3956aa09)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar  6 17:26:45 2020
-// Update Count     : 4474
+// Last Modified On : Mon Apr 27 12:25:42 2020
+// Update Count     : 4483
 //
 
@@ -966,7 +966,11 @@
 
 tuple_expression_list:
-	assignment_expression_opt
-	| tuple_expression_list ',' assignment_expression_opt
+	assignment_expression
+	| '@'												// CFA
+		{ SemanticError( yylloc, "Eliding tuple element with '@' is currently unimplemented." ); $$ = nullptr; }
+	| tuple_expression_list ',' assignment_expression
 		{ $$ = (ExpressionNode *)($1->set_last( $3 )); }
+	| tuple_expression_list ',' '@'
+		{ SemanticError( yylloc, "Eliding tuple element with '@' is currently unimplemented." ); $$ = nullptr; }
 	;
 
Index: src/ResolvExpr/TypeEnvironment.cc
===================================================================
--- src/ResolvExpr/TypeEnvironment.cc	(revision e3bc51c60b9c9b6ea0e677c0358ab2c534e41a95)
+++ src/ResolvExpr/TypeEnvironment.cc	(revision bcd74f39489d76f21240e6f14a5e7aae3956aa09)
@@ -20,4 +20,5 @@
 #include <utility>                     // for pair, move
 
+#include "CompilationState.h"          // for deterministic_output
 #include "Common/utility.h"            // for maybeClone
 #include "SynTree/Type.h"              // for Type, FunctionType, Type::Fora...
@@ -106,7 +107,9 @@
 
 	void EqvClass::print( std::ostream &os, Indenter indent ) const {
-		os << "( ";
-		std::copy( vars.begin(), vars.end(), std::ostream_iterator< std::string >( os, " " ) );
-		os << ")";
+		if( !deterministic_output ) {
+			os << "( ";
+			std::copy( vars.begin(), vars.end(), std::ostream_iterator< std::string >( os, " " ) );
+			os << ")";
+		}
 		if ( type ) {
 			os << " -> ";
@@ -235,5 +238,5 @@
 		// check safely bindable
 		if ( r.type && occursIn( r.type, s.vars.begin(), s.vars.end(), *this ) ) return false;
-		
+
 		// merge classes in
 		r.vars.insert( s.vars.begin(), s.vars.end() );
Index: src/main.cc
===================================================================
--- src/main.cc	(revision e3bc51c60b9c9b6ea0e677c0358ab2c534e41a95)
+++ src/main.cc	(revision bcd74f39489d76f21240e6f14a5e7aae3956aa09)
@@ -449,5 +449,5 @@
 
 
-static const char optstring[] = ":c:ghlLmNnpP:S:twW:D:";
+static const char optstring[] = ":c:ghlLmNnpdP:S:twW:D:";
 
 enum { PreludeDir = 128 };
@@ -462,4 +462,5 @@
 	{ "no-prelude", no_argument, nullptr, 'n' },
 	{ "prototypes", no_argument, nullptr, 'p' },
+	{ "deterministic-out", no_argument, nullptr, 'd' },
 	{ "print", required_argument, nullptr, 'P' },
 	{ "prelude-dir", required_argument, nullptr, PreludeDir },
@@ -482,4 +483,5 @@
 	"do not read prelude",                                // -n
 	"generate prototypes for prelude functions",		// -p
+	"don't print output that isn't deterministic",        // -d
 	"print",                                              // -P
 	"<directory> prelude directory for debug/nodebug",	// no flag
@@ -586,4 +588,7 @@
 			genproto = true;
 			break;
+		  case 'd':                                     // don't print non-deterministic output
+		    deterministic_output = true;
+			break;
 		  case 'P':										// print options
 			for ( int i = 0;; i += 1 ) {
