guile-user
[Top][All Lists]
Advanced

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

Re: Guix records


From: Aleix Conchillo Flaqué
Subject: Re: Guix records
Date: Wed, 10 Feb 2021 13:11:39 -0800

On Tue, Feb 9, 2021 at 4:28 PM Olivier Dion <olivier.dion@polymtl.ca> wrote:

> On Tue, 09 Feb 2021, Aleix Conchillo Flaqué <aconchillo@gmail.com> wrote:
> > Hi Olivier,
> >
> > Unfortunately I don't have an answer, and actually I didn't even know
> this
> > existed, but I'd love to see a library for it. I added something similar
> > (in terms of syntax) to guile-json (define-json-type) and I'm happy to
> see
> > that it seems I was not doing something very stupid. For this specific
> > record it would be something like:
> >
> > (define-json-type <employee>
> >   (age)
> >   (name)
> >   (profession))
> >
> > Which will define a constructor and getters (no setters). However, to
> > create a new record you have to use the constructor (which is not very
> > convenient) or use an alist and then use (scm->employee). But it would be
> > great if one could do:
>
> Is (scm->employee) something (define-json-type) offers?  Just having
> that would be great.  I would be more tolerant to have guile-json as a
> dependency, since it's most likely lighter than Guix, probably already
> installed on the user system and it might me useful for users that are
> allergic to parentheses for configuration.
>
>
Yes, it is. Actually (scm->employee) is something that
(define-json-mapping) offers (also in guile-json). (define-json-mapping)
was originally copied from (guix json) which no longer exists in Guix, they
use guile-json instead.

Then (define-json-type) is based on (define-json-mapping), but yes all of
this is available in guile-json.


> >
> > It would be fantastic to combine (guix records) and guile-json somehow,
> but
> > I'm not sure how.
>
> If guile-json' license is compatible with Guix' license, I don't see any
> problem with taking the code from Guix and adapting it for guile-json.
>
>
Yes, they both are GPLv3. I was referring about how to actually do it
without breaking anything.
Aleix


reply via email to

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