locale problem in button-demo.lsp (OSX, 10.6.0)

Started by t3o, August 20, 2014, 12:32:47 PM

Previous topic - Next topic

t3o

hi,



I have OSX with newlisp 10.6.0 and newLISP-GS v.1.63 installed with homebrew.

 

I tried the button-demo.lsp from http://www.newlisp.org/guiserver/guiserver.lsp.html">http://www.newlisp.org/guiserver/guiserver.lsp.html and ran into an error.



The line


(gs:set-color 'ColorPanel (random) (random) (random))


resulted in a message "Could not invoke method set-color with MAIN:ColorPanel" in a gui dialog.



Adding (println (random)) to the code printed something like:

0,84018771715471



I could fix the problem by either setting the locale to "en_US" (from "de_DE.UTF-8") or by converting the random number to a string with "," replaced by ".":



; use prandom instead of random:
(define (prandom)
(replace "," (string (random)) ".")
)


Shouldn't the locale be irrelevant as there's no output in button-demo.lsp?

What I mean is.. shouldn't the random float be just a value -- nothing that has comma or period when interpreting its value?



(Is there an implicit conversion to a string where the locale plays its role? Is that useful?)



Curious

 t3o

Lutz

#1
The message protocol with guiserver.jar is text-based and relies on the locale set to "C" to guarantee the "." (dot) as decimal separator. This is why all demo programs start with the statement (set-locale "C"). Unless the homebrew installer has changed this, you should not see this error.



If you are running newLISP on OSX you can use the installer from the newlisp.org website, no homebrew installer is required.