Index: src/AST/Print.cpp
===================================================================
--- src/AST/Print.cpp	(revision b200492497c19c94ed9d6996c3c5952cfbb71f9c)
+++ src/AST/Print.cpp	(revision 451d9580a1907a9ec491628a954f8a1767f660dd)
@@ -333,8 +333,47 @@
 		print( node->funcSpec );
 
-		if ( node->type ) {
+
+
+		if ( node->type && node->isTypeFixed ) {
 			node->type->accept( *this );
 		} else {
-			os << "untyped entity";
+			if (!node->type_params.empty()) {
+				os << "forall" << endl;
+				++indent;
+				printAll(node->type_params);
+				os << indent;
+				--indent;
+
+				if (!node->assertions.empty()) {
+					os << "with assertions" << endl;
+					++indent;
+					printAll(node->assertions);
+					os << indent;
+					--indent;
+				}
+			}
+
+			os << "function" << endl;
+			if ( ! node->params.empty() ) {
+				os << indent << "... with parameters" << endl;
+				++indent;
+				printAll( node->params );
+				if ( node->type->isVarArgs ) {
+					os << indent << "and a variable number of other arguments" << endl;
+				}
+				--indent;
+			} else if ( node->type->isVarArgs ) {
+				os << indent+1 << "accepting unspecified arguments" << endl;
+			}
+
+			os << indent << "... returning";
+			if ( node->returns.empty() ) {
+				os << " nothing" << endl;
+			} else {
+				os << endl;
+				++indent;
+				printAll( node->returns );
+				--indent;
+			}
 		}
 
