features inconsistency

Gerardo Horvilleur magoghm@prodigy.net.mx
Tue Dec 27 17:54:00 GMT 2005


I've been thinking if it wouldn't be better to have a special Java  
class to represent Kawa symbols instead of java.lang.String. Both  
Kawa symbols and Java strings are immutable objects that contain a  
string of characters, but I'm not sure it is "right" to use Java  
strings as the internal representation for symbols in Kawa.

I believe that using a custom class for Kawa symbols would have the  
following benefits:

1. No more broken symbol serialization (Java strings are not interned  
on deserialization).

2. It might simplify the semantics of calling a Java method which  
returns a String.

I am aware this might not be a trivial change in Kawa's  
implementation :)

Gerardo Horvilleur
mago@mundojava.com
5813-0830



On Dec 22, 2005, at 11:10 AM, Per Bothner wrote:

> Victor Anyakin wrote:
>> Greetings to All,
>>   I would like to share my experience using Kawa interpreter.
>>   Everything seems fine, but, it seems to me somewhat odd, how  
>> strings
>>   are processed.  There are lots of cases, when strings returned from
>>   java methods (of type <java.lang.String>) are not accepted by Kawa
>>   routines (like string->number).  Each time I pass or receive a
>>   string, extra care has to be taken, in order to ensure, that it  
>> will
>>   be normally processed.
>
> Yes, this is annoying, but it is to some extent unavoidable, since
> java.lang.String objects are immutable, and Scheme strings can be
> modified.
>
> I do hope to more automatically convert between the two types, but
> I haven't worked out the details.  Note automatically converting from
> a Java string to a Scheme string is dangerous, because if someone
> modifies the resulting string they may get non-obvious  
> inconsistencies.
> Adding a "non-modifioable Scheme string" type is probably the  
> solution.
>>   One more issue are plain java arrays.  I find it inconvenient to
>>   define (primitive-array-get <type>) and so forth every time I wish
>>   to process plain java array.
>
> Yep.  The syntax is clunky.  You might want to define some type- 
> specific
> macros for your application.
>
> I have been thinking about an alternative syntax.  I'm leaning towards
> using function-call syntax, but that is a rather radical change:
>
> (define my-arr (<int[]> length: 10))
> (set! (my-arr 3) (my-arr 5))
> -- 
> 	--Per Bothner
> per@bothner.com   http://per.bothner.com/



More information about the Kawa mailing list