------- Start of forwarded message -------
Return-Path: <c++std=all@research.att.com>
To: beman@dawes.win.net, gcorneau@absolu.com, rod@declarative.com,
        musser@cs.rpi.edu, waynew@asymetrix.com, mark@island.com,
        nico@bredex.de, x3j16.edit@mri.com, c++std-core-in@cygnus.com
>From: clamage@pacific-88.Eng.Sun.COM
Errors-To: c++std-postmaster@research.att.com
Reply-To: c++std-all@research.att.com
Precedence: list
Transport-Options: /ignore
Date: Mon, 6 May 1996 08:08:50 -0700
>From: clamage@pacific-88.Eng.Sun.COM (Steve Clamage)
Subject: Maybe we could borrow some ideas ...
X-Sun-Charset: US-ASCII

To: C++ committee
Message c++std-all-1433

Found in junk@sun, author unknown.
---
Steve Clamage, stephen.clamage@eng.sun.com



Announcing the new language "C+-" (Pronounced "C  more or less.")

Unlike C++, C+- is a subject-oriented language. Each C+- class
instance, known as a subject, holds hidden members, known as
prejudices or undeclared preferences, which are impervious to outside
messages, as well as public members known as boasts or claims. The
following C operators are overridden as shown:

	>    better than
	<    worse than
	>>   much better than
	<<   forget it
	!    not on your life
	==   comparable, other things being equal

C+- is a strongly typed language based on stereotyping and
self-righteous logic. The boolean variables TRUE and FALSE (known as
constants in less realistic languages) are supplemented with CREDIBLE
and DUBIOUS, which are fuzzier than Zadeh's traditional fuzzy
categories. All booleans can be declared with the modifiers strong and
weak. Weak implication is said to "preserve deniability" and was added
at the request of the DoD to ensure compatibility with future versions
of Ada.  Well-formed falsehoods (WFFs) are assignment-compatible with
all booleans. What-if and why-not interactions are aided by the special
conditional evenifnot X then Y.

C+- supports information hiding and, among friend classes only, rumor
sharing. Borrowing from the Eiffel lexicon, non-friend classes can be
killed by arranging contracts. Note that friendships are intransitive,
volatile, and non-Abelian.

Single and multiple inheritance mechanisms are implemented with random
mutations. Disinheritance rules are covered by a complex probate
protocol. In addition to base, derived, virtual, and abstract classes,
C+- supports gut classes. In certain locales, polygamous derivations
and bastard classes are permitted.  Elsewhere, loose coupling between
classes is illegal, so the marriage and divorce operators may be
needed:

	> marriage (MParent1, FParent1);
	// child classes can now be derived

	sclass MySclass:  public MParent1, FParent1 {  // define MySclass
	sclass YourSclass: public MParent1, FParent2   // illegitimate
	divorce (MParent1, FParent1);
	marriage (MParent1, FParent2);
	sclass YourSclass: public MParent1, FParent2 { // OK now

Operator precedence rules can be suspended with the directive #pragma
dwim, known as the "Do what I mean" pragma.  ANSIfication will be
firmly resisted.

C+-'s slogan is "Be Your Own Standard."

------- End of forwarded message -------


-- 
David R. Musser
 Rensselaer Polytechnic Institute	518 276-8660
 Computer Science Department		FAX: 518 276-4033
 Troy, NY 12180				musser@cs.rpi.edu
             http://www.cs.rpi.edu/~musser

