Index: libcfa/prelude/prelude-gen.cc
===================================================================
--- libcfa/prelude/prelude-gen.cc	(revision 2782f38a71eacbc10ee2e26fb9a636cb17b6ccd4)
+++ libcfa/prelude/prelude-gen.cc	(revision ee06e41b1fa691fcca2f7a049a4e78f264265897)
@@ -1,2 +1,17 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// prelude-gen.cc -- 
+// 
+// Author           : Rob Schluntz and Thierry Delisle
+// Created On       : Sat Feb 16 08:44:58 2019
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Feb 18 09:47:33 2019
+// Update Count     : 22
+// 
+
 #include <algorithm>
 #include <array>
@@ -11,7 +26,7 @@
 	bool hasComparison;
 } basicTypes[] = {
-	// { "char"                  , false, true , },
-	// { "signed char"           , false, true , },
-	// { "unsigned char"         , false, true , },
+	{ "char"                  , false, true , },
+	{ "signed char"           , false, true , },
+	{ "unsigned char"         , false, true , },
 	{ "signed short"          , false, true , },
 	{ "unsigned short"        , false, true , },
@@ -150,7 +165,7 @@
 	cout << endl;
 
-	cout << "signed int ?==?( zero_t, zero_t ),							?!=?( zero_t, zero_t );" << endl;
-	cout << "signed int ?==?( one_t, one_t ),							?!=?( one_t, one_t );" << endl;
-	cout << "signed int ?==?( _Bool, _Bool ),							?!=?( _Bool, _Bool );" << endl;
+	cout << "signed int ?==?( zero_t, zero_t ),	?!=?( zero_t, zero_t );" << endl;
+	cout << "signed int ?==?( one_t, one_t ),	?!=?( one_t, one_t );" << endl;
+	cout << "signed int ?==?( _Bool, _Bool ),	?!=?( _Bool, _Bool );" << endl;
 	cout << "signed int !?( _Bool );" << endl;
 
@@ -188,13 +203,15 @@
 	cout << "// Arithmetic Constructors //" << endl;
 	cout << "/////////////////////////////" << endl;
+	cout << endl;
+
 	auto otype = [](const std::string & type, bool do_volatile = false) {
-		cout << "void \t?{} ( " << type << " & );" << endl;
-		cout << "void \t?{} ( " << type << " &, " << type << " );" << endl;
-		cout << type << " \t?=? ( " << type << " &, " << type << " )";
-		if( do_volatile ) {
-			cout << ", \t?=?( volatile " << type << " &, " << type << " )";
+		cout << "void ?{} (" << type << " &);" << endl;
+		cout << "void ?{} (" << type << " &, " << type << ");" << endl;
+		cout << type << "  ?=? (" << type << " &, " << type << ")";
+		if ( do_volatile ) {
+			cout << ",  ?=?(volatile " << type << " &, " << type << ")";
 		}
 		cout << ";" << endl;
-		cout << "void \t^?{}( " << type << " & );" << endl;
+		cout << "void ^?{}( " << type << " & );" << endl;
 	};
 
@@ -202,11 +219,10 @@
 	otype("one_t");
 	otype("_Bool", true);
-	otype("char", true);
-	otype("signed char", true);
-	otype("unsigned char", true);
+	cout << endl;
 
 	for (auto type : basicTypes) {
-		cout << "void  ?{}(" << type.name << " &);" << endl;
-		cout << "void  ?{}(" << type.name << " &, " << type.name << ");" << endl;
+		cout << "void ?{}(" << type.name << " &);" << endl;
+		cout << "void ?{}(" << type.name << " &, " << type.name << ");" << endl;
+		cout << "void ?{}(" << type.name << " &, zero_t);" << endl;
 		cout << "void ^?{}(" << type.name << " &);" << endl;
 		cout << endl;
@@ -217,6 +233,8 @@
 	cout << "// Pointer Constructors //" << endl;
 	cout << "//////////////////////////" << endl;
-	cout << "forall(ftype FT) void  ?{}( FT *&, FT * );" << endl;
-	cout << "forall(ftype FT) void  ?{}( FT * volatile &, FT * );" << endl;
+	cout << endl;
+
+	cout << "forall(ftype FT) void ?{}( FT *&, FT * );" << endl;
+	cout << "forall(ftype FT) void ?{}( FT * volatile &, FT * );" << endl;
 
 	// generate qualifiers
@@ -242,10 +260,10 @@
 		for (auto cvq : qualifiersPair) {
 			for (auto is_vol : { "        ", "volatile" }) {
-				cout << "forall(dtype DT) void  ?{}(" << cvq.first << type << " * " << is_vol << " &, " << cvq.second << "DT *);" << endl;
+				cout << "forall(dtype DT) void ?{}(" << cvq.first << type << " * " << is_vol << " &, " << cvq.second << "DT *);" << endl;
 			}
 		}
 		for (auto cvq : qualifiersSingle) {
 			for (auto is_vol : { "        ", "volatile" }) {
-				cout << "forall(dtype DT) void  ?{}(" << cvq << type << " * " << is_vol << " &);" << endl;
+				cout << "forall(dtype DT) void ?{}(" << cvq << type << " * " << is_vol << " &);" << endl;
 			}
 			for (auto is_vol : { "        ", "volatile" }) {
@@ -386,2 +404,6 @@
 	cout << endl;
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/containers/maybe.cfa
===================================================================
--- libcfa/src/containers/maybe.cfa	(revision 2782f38a71eacbc10ee2e26fb9a636cb17b6ccd4)
+++ libcfa/src/containers/maybe.cfa	(revision ee06e41b1fa691fcca2f7a049a4e78f264265897)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 24 15:40:00 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 20 15:23:50 2017
-// Update Count     : 2
+// Last Modified On : Sun Feb 17 11:22:03 2019
+// Update Count     : 3
 //
 
@@ -39,5 +39,5 @@
 forall(otype T)
 maybe(T) ?=?(maybe(T) & this, maybe(T) that) {
-	if (this.has_value & that.has_value) {
+	if (this.has_value && that.has_value) {
 		this.value = that.value;
 	} else if (this.has_value) {
Index: libcfa/src/containers/result.cfa
===================================================================
--- libcfa/src/containers/result.cfa	(revision 2782f38a71eacbc10ee2e26fb9a636cb17b6ccd4)
+++ libcfa/src/containers/result.cfa	(revision ee06e41b1fa691fcca2f7a049a4e78f264265897)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 24 15:40:00 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 20 15:23:58 2017
-// Update Count     : 2
+// Last Modified On : Sun Feb 17 11:24:04 2019
+// Update Count     : 3
 //
 
@@ -48,5 +48,5 @@
 forall(otype T, otype E)
 result(T, E) ?=?(result(T, E) & this, result(T, E) that) {
-	if (this.has_value & that.has_value) {
+	if (this.has_value && that.has_value) {
 		this.value = that.value;
 	} else if (this.has_value) {
