From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Andy Wingo Newsgroups: gmane.lisp.guile.devel Subject: goops proposal: proper struct classes Date: Sun, 01 May 2011 22:19:38 +0200 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: dough.gmane.org 1304281192 28494 80.91.229.12 (1 May 2011 20:19:52 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sun, 1 May 2011 20:19:52 +0000 (UTC) To: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Sun May 01 22:19:48 2011 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1QGd7K-0002VR-RT for guile-devel@m.gmane.org; Sun, 01 May 2011 22:19:46 +0200 Original-Received: from localhost ([::1]:41374 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QGd7K-00083p-Bt for guile-devel@m.gmane.org; Sun, 01 May 2011 16:19:46 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:43025) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QGd7H-00083k-R4 for guile-devel@gnu.org; Sun, 01 May 2011 16:19:44 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QGd7G-0001IV-I3 for guile-devel@gnu.org; Sun, 01 May 2011 16:19:43 -0400 Original-Received: from a-pb-sasl-sd.pobox.com ([64.74.157.62]:33965 helo=sasl.smtp.pobox.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QGd7G-0001IR-FG for guile-devel@gnu.org; Sun, 01 May 2011 16:19:42 -0400 Original-Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-sd.pobox.com (Postfix) with ESMTP id 56A30560F for ; Sun, 1 May 2011 16:21:45 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to :subject:date:message-id:mime-version:content-type; s=sasl; bh=h nLSQb9avmaGXjvtbKBIAU+xYfI=; b=gJWT6aKtegeQ6PGAyfPhpn6uyHDNhTzTm 5BCsewoOomV+p4OWNGFNPeelXBsNuCWGUVolf7Op98eaIKFXBdVxb4Dbm9huyx/v 9SPK6tsBjrjKPF6QIeRAtCFaeglcqoOOqpSK9D9AjEmL6Dz0AHRB0+mKkLxOpaC3 EMo5jTnwI8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:subject :date:message-id:mime-version:content-type; q=dns; s=sasl; b=LmL S36hkdAzHT3BW7cPh5F4CnuV+S67E5FOgi+XQAj9Xch2AiFLGSK6EUeSBVBuvaFu bBPaxjiSNKQhYQMUIW5gcQ7/AHWnqTo9oEZ6sBD7YUvmbZoQz2iJdDlqYHH0ogga GRqMkw7NufzrMYE7fx9/5M4mI1JL45S4FktZ7BCk= Original-Received: from a-pb-sasl-sd.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-sd.pobox.com (Postfix) with ESMTP id 53133560E for ; Sun, 1 May 2011 16:21:45 -0400 (EDT) Original-Received: from unquote.localdomain (unknown [90.164.198.39]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by a-pb-sasl-sd.pobox.com (Postfix) with ESMTPSA id BB7F7560C for ; Sun, 1 May 2011 16:21:44 -0400 (EDT) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) X-Pobox-Relay-ID: A253F984-7430-11E0-802C-E8AB60295C12-02397024!a-pb-sasl-sd.pobox.com X-detected-operating-system: by eggs.gnu.org: Solaris 10 (beta) X-Received-From: 64.74.157.62 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:12392 Archived-At: Hello all, If you know GOOPS, then you know that we have classes, rooted at . And indeed shows up a lot in documentation and in code. But that's not how it is in CLOS: our corresponds to their `standard-class'. They have a superclass, called `class', which is the real root, and from which e.g. structure classes are derived. We need to do this. Currently, class-of on a struct/record data type gives a useless class that can't instantiate instances, doesn't know its slots, and does not reflect the vtable hierarchy. So we need a , interposed between and , which will be the real root of our class meta-object hierarchy. I noticed this while fixing some weak hash table-related bugs today, and I saw set-struct-vtable-name!, which ends up causing some crazy stuff to happen (exporting a stub class from (oop goops)), and noticed how wrong all this was. Comments? Andy -- http://wingolog.org/