chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] Print asymmetry with coops


From: Peter Bex
Subject: Re: [Chicken-users] Print asymmetry with coops
Date: Fri, 26 Apr 2019 11:17:26 +0200
User-agent: NeoMutt/20170113 (1.7.2)

On Fri, Apr 26, 2019 at 09:11:02AM +0000, EfraimVagner wrote:
> Hi,
> 
> I've started to work on a small project for fun in scheme, and I wanted to 
> use a class for one thing. I saw that there is the coops extension, that does 
> what I want, but my problem is that when printing an object i get 
> #<coops-instance>. I saw I can use describe-object to get a better 
> description of the object. Another thing that I would like to have, is that 
> in sbcl, for example (I think any common lisp implementation acts the same), 
> when using defstruct, the printed version of the new object can be used to 
> create another object. For example:
> 
> (defstruct point x y)
> 
> (make-point :x 1 :y 2) ;; Will print #S(POINT :X 1 :Y 2)
> 
> (setq p1 #S(POINT :X 10 :Y 0)) ;; p1 will be a point with x=10 and y=0
> 
> I don't like the way it works in scheme because it looses the symmetry of 
> lisp. My question is then, how can I restore the symmetry? (btw, I'm using 
> chicken scheme if it matters)

Hi Efraim,

You can define a custom record printer using define-record-printer:
https://wiki.call-cc.org/man/5/Module%20(chicken%20base)#define-record-printer

The example here also uses define-reader-ctor to read back the record.
If you prefer custom read syntax like in Common Lisp, you could also
use set-[sharp-]read-syntax! from (chicken read-syntax):
http://wiki.call-cc.org/man/5/Module%20(chicken%20read-syntax)#set-read-syntax

I think you should also be able to define custom read syntax for coops
instances as well.

Hope this helps,
Peter

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]