unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Marko Rauhamaa <marko@pacujo.net>
To: Jan Wedekind <jan@wedesoft.de>
Cc: Andy Wingo <wingo@pobox.com>,
	"guile-user@gnu.org" <guile-user@gnu.org>,
	guile-devel <guile-devel@gnu.org>
Subject: Re: anyone define port types?
Date: Fri, 01 Apr 2016 01:28:15 +0300	[thread overview]
Message-ID: <87pouas2o0.fsf@elektro.pacujo.net> (raw)
In-Reply-To: <alpine.DEB.2.11.1603312123540.8961@wedemob> (Jan Wedekind's message of "Thu, 31 Mar 2016 21:42:04 +0100 (BST)")

Jan Wedekind <jan@wedesoft.de>:

> On Thu, 31 Mar 2016, Marko Rauhamaa wrote:
>> (get-x) is only a fig leaf for (slot-ref). In general, no user of an
>> <a> object should think the object holds a piece of information
>> called x. Instead, you should be interacting with the abstract object
>> <a>.
>
> Well, actually (get-x) is a generic as well. I.e. it is polymorphic
> and does not have to be a simple accessor for a slot.

Naturally, that's not my point.

In practice, GOOPS can be used just like any classic object system.
However,

 * The (make)/(initialize) mechanism is strongly tied to the slots.
   There is a strong temptation to define a nongeneric constructor
   function for each class that internally calls (make) with appropriate
   slot settings. This is suggested at the bottom of <URL: https://www.gn
   u.org/software/guile/manual/html_node/Slot-Description-Example.html#Sl
   ot-Description-Example>.

   Unfortunately, the separate constructor can't invoke a base class's
   constructor function but must contend with (make), which exposes the
   base class's slots to the derived class.

   Ideally, you should be able to interpret the keyword args to
   (make)/(initialize) independently of the slots. However, the
   (next-method) mechanism makes this tricky.

 * The (self <class>) notation makes code look very un-Schemey and
   noisy. For example, classic port dispatching is handled with the
   assumption that the port knows its methods.

 * The slot emphasis permeates the documentation and available
   facilities. The long <my-complex> is advertised as "a better
   solution" even though it is extremely noisy and complex numbers are
   extremely passive as objects (<URL: https://www.gnu.org/software/gui
   le/manual/html_node/Slot-Description-Example.html#Slot-Description-E
   xample>).

   What on earth are (shallow-clone) and (deep-clone) supposed to
   accomplish? Duplicate the database? Open another session to the
   server?


Marko



  reply	other threads:[~2016-03-31 22:28 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-28 19:04 anyone define port types? Andy Wingo
2016-03-28 23:53 ` Matt Wette
2016-04-05 14:06   ` Mark H Weaver
2016-04-05 23:55     ` Matt Wette
2016-06-11 16:50       ` Andy Wingo
2016-03-29  7:58 ` tomas
2016-03-29  8:52 ` Nala Ginrut
2016-03-30  6:29 ` Panicz Maciej Godek
2016-03-30 11:18   ` Jan Nieuwenhuizen
2016-03-30 17:17     ` Panicz Maciej Godek
2016-03-30 17:53       ` Marko Rauhamaa
2016-03-30 19:02         ` Panicz Maciej Godek
2016-03-30 19:57           ` Marko Rauhamaa
2016-03-31 16:11             ` Barry Fishman
2016-03-31 19:28               ` Marko Rauhamaa
2016-03-30 19:43         ` Jan Wedekind
2016-03-30 20:07           ` Marko Rauhamaa
2016-03-30 21:01             ` Jan Wedekind
2016-03-30 22:44               ` Marko Rauhamaa
2016-03-31 20:42                 ` Jan Wedekind
2016-03-31 22:28                   ` Marko Rauhamaa [this message]
2016-06-11 16:53   ` Andy Wingo
2016-04-01 14:38 ` Ludovic Courtès
2016-06-11 16:57   ` Andy Wingo
2016-04-14 14:08 ` Ludovic Courtès
2016-06-11 17:02   ` Andy Wingo
2016-06-12  8:25     ` Chris Vine
2016-06-19  9:13       ` Andy Wingo
2016-06-19  9:55         ` Marko Rauhamaa
2016-06-19 15:27           ` Andy Wingo
2016-06-19 15:33         ` Chris Vine
2016-06-19 17:48           ` Andy Wingo
2016-06-19 20:09             ` Chris Vine
2016-06-20  3:38               ` William ML Leslie
2016-06-20  6:45                 ` Chris Vine
2016-06-20  7:34                   ` Andy Wingo
2016-06-20  9:01                     ` Chris Vine
2016-06-22 22:44                       ` Chris Vine
2016-06-23  7:36                         ` Andy Wingo
2016-06-23  8:56                           ` Andy Wingo
2016-06-23  9:24                           ` Chris Vine
2016-06-23  9:50                             ` Marko Rauhamaa
2016-06-23 10:43                             ` Andy Wingo
2016-06-23 11:49                               ` William ML Leslie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87pouas2o0.fsf@elektro.pacujo.net \
    --to=marko@pacujo.net \
    --cc=guile-devel@gnu.org \
    --cc=guile-user@gnu.org \
    --cc=jan@wedesoft.de \
    --cc=wingo@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).