public inbox for kawa@sourceware.org
 help / color / mirror / Atom feed
From: scprotz <scprotz@gmail.com>
To: Per Bothner <per@bothner.com>
Cc: kawa@sourceware.org
Subject: Re: Missing feature or just differences with Guile for define-public
Date: Sun, 29 Jan 2017 06:07:00 -0000	[thread overview]
Message-ID: <CAB3sfF9MW+HtzLu7ZpzV9ERoOJAb0usj4z0eb85RvePNDAEBiQ@mail.gmail.com> (raw)
In-Reply-To: <b77bc668-f6f1-b3fc-9be1-73b7a95dfabc@bothner.com>

So my guess is, from a functional point of view, 'define-public' is
essentially like 'extern' in C (exposing the function to the C/Gnome)
calls?

I have already reviewed the C/C++ code in Aisleriot and converting it
from C to Java has been very easy so far (since GTK/Glib have very
similar counterparts in Java).  I'm just trying to figure out how I'd
make the functional equivalent of a 'define-public' in a Kawa program
so that my Java app can call it, or is everything automatically
exposed as part of the compiled class once compiled by Kawa  (i.e.
there would be a class called "api.class" and it would have a function
called "setFeatures"?  Again, my exposure to Kawa specifically is
limited at this time, so just looking for pointers.

If all defines are exposed as class objects (methods), then just
changing define-public to define might be good enough (since
define-public seems to be a guile-specific thing to expose functions
to C).

-scprotz


On Sun, Jan 29, 2017 at 3:07 AM, Per Bothner <per@bothner.com> wrote:
> On 01/28/2017 04:40 AM, scprotz wrote:
>>
>> I was trying to compile the scm files that come with Aisleriot using
>> Kawa (these are intended for use with Guile, but I was hoping to try
>> them out in Java).  Many seem to compile ok, but one of the core
>> files, api.scm has problems.
>>
>> I came across two issues when trying to convert api.scm to .class.
>>
>> The first was "invalid use of '_".  Apparently kawa doesn't like the _
>> as part of define's.  Easy enough to fix just by changing the '_ to
>> another identifier.
>>
>> The second issue though was I get "improper list (circular or dotted)
>> is not allowed here.
>>
>> Here is an example define-public from the file:
>>
>> (define-public (set-features . feature-list)
>>   (set-feature-word! (+ (get-feature-word)
>>        (apply + feature-list))))
>>
>> My scheme-fu is very very weak, so I'm not sure if this is just an
>> implementation difference, a bug, or my misunderstanding.
>
>
> This problem is because Kawa does not define define-public,
> so Kawa thinks it is a function call.  And an quoted dotted
> list is not valid in an expression.
>
> Kawa has a different module system that Guile.
> Specifically, it does not define define-module,
> use-module, or define-public.
>
> It might be possible to define Kawa implementations for
> the Guile module system on top of the Kawa module system,
> though there would probably be some incompatibilities.
>
> It seems like Aisleriot depends on lots of native code,
> including calls to Gnome.  So getting anything working will be
> a major porting effort.
>
> --
>         --Per Bothner
> per@bothner.com   http://per.bothner.com/

  reply	other threads:[~2017-01-29  6:07 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-28 12:40 scprotz
2017-01-28 23:08 ` Per Bothner
2017-01-29  6:07   ` scprotz [this message]
2017-01-29  7:04     ` Per Bothner
2017-01-29  7:35       ` scprotz

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

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

  git send-email \
    --in-reply-to=CAB3sfF9MW+HtzLu7ZpzV9ERoOJAb0usj4z0eb85RvePNDAEBiQ@mail.gmail.com \
    --to=scprotz@gmail.com \
    --cc=kawa@sourceware.org \
    --cc=per@bothner.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).