Re: [Chicken-users] Re: SRFI 41

2009-05-07 Thread minh thu
2009/5/7 Phil Bewig pbe...@gmail.com:

 ...

 I disagree.  Streams and lists are not substitutable.  Haskell conflates
 the two because everything in Haskell is lazy, so there is no difference.
 But that isn't true in Scheme.

 There is a reason for 'delay'  'force'. Scheme is eager but
 multi-paradigm and API designers shouldn't go out of the way to hide the
 fact. At least for the basics :-)

 Exactly.  Haskell is pure and lazy all the way.  Scheme is broader.

Hi,

I'm a bit surprised you mention delay and force for Scheme then say
Haskell is pure and lazy all the way. You can have side effects in
Haskell and you can force evaluation too.

Cheers,
Thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Wiki (early) spring cleaning!

2009-03-10 Thread minh thu
2009/3/10 felix winkelmann bunny...@gmail.com:
 On Tue, Mar 10, 2009 at 9:53 AM, Peter Bex peter@xs4all.nl wrote:

 This has been implemented now.

 For example, you can visit http://chicken.wiki.br/eggref/3/9p to view the
 Chicken 3 documentation for the 9p egg and http://chicken.wiki.br/eggref/3/9p
 to view the Chicken 4 documentation for the egg.

 (Should probably mean ...eggref/4/9p for the latter)


 The quick (short URL) way to access an egg documentation has not
 entirely disappeared; it used to be http://chicken.wiki.br/9p but it has
 become http://chicken.wiki.br/egg/9p.  'egg' is simply a symlink in the
 wiki's root directory that points to eggref/N, with N the current latest
 release version.  This would be the preferred way to link to the egg, if
 no particular version is intended.

 If there are some hiccups resulting from this move, please let me know
 about it.  There are four egg documentations (at least, files containing
 the 'egg' tag) still left in the root.  I'd appreciate it if their
 authors can have a look at them to see what should happen to them:

 gl-display
 growl
 svnwiki-atom
 svnwiki-javascript


 Thanks, Peter!


Sorry, I haven't followed the discussion.
I'm still on the mailing list but didn't use Chicken
for a long time (and it will probably not happen soon).

I'm the author of gl-display. Due to its state, I doubt
anyone is interested in it beside me, so it could be
deleted without problem for me.

Cheers,
Thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Open question on C binding style

2008-07-17 Thread minh thu
2008/7/17 Jim Ursetto [EMAIL PROTECTED]:
 On Wed, Jul 16, 2008 at 9:54 PM, Kon Lovett [EMAIL PROTECTED] wrote:
 1) When there is a one to one mapping between a Scheme variable/constant  a
 C variable/macro-constant/constant/enum should the Scheme symbol naming
 mirror the C naming? Should the C 'SOME_C_LIBRARY_MACCONST' identifier be
 mapped to the Scheme 'SOME_C_LIBRARY_MACCONST', or some Scheme'ish
 'some-c-library-macconst'?

 2) A C procedure binding name:  'some_c_func' - 'foreign-some-c-func' ,
 'some_c_func', 'C_some_c_func'?

 I prefer the scheme style for any exported API.  I use the C style
 only for internal stuff which is basically on the bare metal (maybe
 using a similar schemely name for a nicer wrapper), or when I really
 want to warn the user this is lowlevel stuff.

 Example from socket egg, SO_REUSEADDR - so/reuseaddr (low-level
 integer value), and socket-reuse-address (high-level procedure).  Here
 I did not happen to use SO_REUSEADDR verbatim, though that would
 have been acceptable.  I just don't like shouting.

 In short, it depends on the egg.

I'm making binding for GLEW (thus making bindings for OpenGL 2.1).
I've chosen gl-vertex3f and GL-POINTS to map glVertex3f and GL_POINTS.

If I write the C code, I would have gl_vertex3f instead (in C).
I think GL-POINTS could be gl-points unambiguaously but maybe
someone would like to write a gl-points as higher level procedure.

And Felix chose gl:Vertex3f and gl:POINTS for the OpenGL bindings.
I guess when I'll release the egg, I'll make the two options
available.

Cheers,
Thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] chicken-setup

2008-07-15 Thread minh thu
2008/7/15 Shawn Rutledge [EMAIL PROTECTED]:
 On Mon, Jul 14, 2008 at 6:01 PM, Ivan Raikov [EMAIL PROTECTED] wrote:
   The idea is basically to isolate all of the general procedures for
 e.g. installation and compilation, which once written would probably
 stay relatively unchanged, and only modify the frontend as
 chicken-setup policies evolve. We could also think about having
 different frontends, e.g. for use with different package building
 tools.

 This sounds good so far.

 So an egg could include a custom setup script, or else it would be
 auto-generated from the .meta file at installation time and therefore
 the egg is not required to provide it, right?

 On Tue, Jul 15, 2008 at 12:11 AM, Peter Bex [EMAIL PROTECTED] wrote:
 I don't think this can be solved automatically (unless we want to
 recreate Autotools or CMake) so what is needed is a way to override or
 add to existing search paths by passing switches to chicken-setup,
 which it then can pass on to the compiler. Example:

 chicken-setup foo.egg -I /opt/foo/include -L /opt/foo/lib

 That could be a last-ditch way to solve problems but I would hope most
 users wouldn't need to do that for most eggs.

 Is there anything wrong with putting extra -I's and -L's in the meta
 file, with some possible guesses the egg developer can think of, where
 a particular library or include might be located?  And chicken-setup
 could append the usual suspects automatically, like /usr/include,
 /usr/local/include etc.

 (library foo-wrapper
  (version 1.4)
  (make (foo-wrapper.scm) (compile -O2 -d0 -s foo-wrapper.scm
 -L/usr/lib/foo -L/usr/include/foo -ldl -lfoo -lchicken

 One problem I could think of is the case where the user has multiple
 versions of the same library, or is cross-compiling, in which case the
 default paths, or the paths suggested in the meta file, could be
 misleading.  I guess he'd have to specify the -I and -L somehow, as
 you suggest.  If the user does that, then chicken-setup would not
 include the default paths, or at least would put the provided paths
 first.

 Or somehow the meta file could suggest that libfoo.so might be located
 in a directory called foo-1.0, somewhere, and chicken-setup could
 expand that to -L/usr/lib/foo-1.0 -L/usr/local/lib/foo-1.0 etc.

 But the ability to cross-compile eggs is something I need to test
 soon; sounds like it's pretty cool already.  I'm working on a bitbake
 recipe for chicken for OpenMoko (I'm still a newbie with that) and am
 wondering if it's going to be possible to get bitbake to compile all
 the eggs too, and make ipk's for all of them, hopefully either
 semi-automatically or I can come up with a way to generate recipes
 automatically from the meta files, or something.

Hi,

Another case is when we use pkg-config as in
`pkg-config --cflags --libs pangocairo`.

Thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: Chicken-setup redesign (was: Re: [Chicken-users] Re: getopt, getopt_long?)

2008-07-14 Thread minh thu
2008/7/14 felix winkelmann [EMAIL PROTECTED]:
 On Mon, Jul 14, 2008 at 2:35 PM, Mario Domenech Goulart
 [EMAIL PROTECTED] wrote:

 Yes, that would work. You would also need a file for foo-1, I suppose,
 if one wants to to load the highest minor version of 1.XXX. This will
 produce lots of little loader-files, though.

 Hmmm.  I haven't thought about this level of granularity.  I thought
 users would either specify the exact version they want or no version
 (in this case, the highest would be used).  How would users specify
 they want to load the highest minor version of 1.?

 I was thinking about creating a little loader for the highest version
 _only_, for when users don't specify the version when loading an
 extension (so the highest is picked).

 For example, if the foo egg is installed (say its version is 1.0), the
 local repo would contain:

foo-1.0.so
foo.so

 foo.so would be generated by compiling

   (require-library foo-1.0)

 since 1.0 is the highest version.

 Now suppose there's a new version for foo (1.1).  So, when foo is
 updated, the local repo would contain:

foo-1.0.so
foo-1.1.so
foo.so

 Now, foo.so would contain the code to load foo-1.1, not 1.0, but users
 will still be able to load 1.0 if they need (explicitly, though).


 I guess having eitther the newest or a specific version is enough. I don't
 think having finer grained access is really necessary, but I think Peter
 proposed that?

I think he did too. But is you're view of fine-grained a bit 'reversed' ?

If you say you want foo-1, and *if* that library is done such that minor
version increases are backward-compatible in the same major number,
isn't it more naturall to request foo-1 and then get the highest minor
number than requesting foo then have the higher overall number ?

(since higher major numbers are more likely to break compatibility
than higher minor numbers)

In other words, foo-1.1 and foo-1.2 are the same library, while
foo-1.0 and foo-2.0 are too different. If I make a mistake here, I guess
we could have some guidelines on the semantic of version numbers...

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Re: #include in foreign-parse

2008-07-09 Thread minh thu
2008/7/9 felix winkelmann [EMAIL PROTECTED]:
 On Sat, Jul 5, 2008 at 11:04 PM, minh thu [EMAIL PROTECTED] wrote:

 Weird. By ending the #include ... lines with a #include file.h with 
 file.h
 being in the .egg, chicken-setup ends successfully.

 Is it something known (and corrected in later version) ?


 I'll check this. It is properly caused by a problem with the current
 include path during compalation of the egg.

In fact, while chicken-setup completes, it's not true it's successful
: no binding is generated.
I can't say more, I've reverted my egg to include the header files (so
it's certainly not a show-stopper for me).

Cheers,
Thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] getopt, getopt_long?

2008-07-08 Thread minh thu
2008/7/8 William Xu [EMAIL PROTECTED]:
 Hi,

 Does chicken have some egg for wrapping getopt, getopt_long?

I don't know specifically for getopt, but you might be interested by
http://chicken.wiki.br/tool or http://chicken.wiki.br/args-doc.

Cheers,
Thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] #include in foreign-parse

2008-07-05 Thread minh thu
Hi,

I've made bindings in the following way (in a .scm file):

(foreign-parse #EOF

___declare ...
...
#include somefile.h
...

EOF
)

and the somefile.h is placed in the .egg.

No problem, everything is fine.

(But how do I install a local .egg ? chicken-setup complains the .egg
is not in /tmp/chicken-... )

Then, since the somefile.h ships with the library to bind, it makes sense,
to replace

#include somefile.h

with

#include somefile.h

no more put it in the .egg, and assume the library is already installed.

But now, when installing the egg, I've got

Error: during expansion of (foreign-parse ...) - can not open include
file: somefile.h

I think the problem is because of the change somefile.h
somefile.h, but I'm not sure.

The header is in /usr/local/include/, maybe sudo chicken-setup does not see it ?

Any idea ? (I'm still using chicken 3.2.0)

Thanks a lot,
Thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Re: [Chicken-hackers] better hash function

2008-03-19 Thread minh thu
2008/3/19, Kon Lovett [EMAIL PROTECTED]:
 There is a hashes egg w/ FNV  many others.

I forgot that version of the first rule (of whatever rules set) :
- always look at what already exists
becomes
- always look at eggs unlimited

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [chicken-users] silex GPL-2 licensed?

2008-03-19 Thread minh thu
  [snip]
   Does this mean distributing the c intermediates of an app along with
   the chicken libraries (in c form) and eggs (again in c form) needed to
   run it therefore has no need for silex either and can be distributed
   under, for example, a BSD license?

  That's right.  Of course, if you use a GPLed egg, you have to distribute
  Scheme source for your whole app.  C source is obfuscated and doesn't
  count for GPL purposes.

It seems to me that you both say the opposite. I understand the
exemple above of distributing averything in C form includes C code
from any egg (under any license, not just BSD).

So what is it, generated C code cannot be redistributed without the
scheme source if the scheme source is GPL or can it be, just like code
emitted by Bison or Silex ?

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] spiffy example

2008-02-29 Thread minh thu
Hi,

In 'Adding dynamic resources' at http://chicken.wiki.br/spiffy,
I think there are two mistakes :

- http:write-response-header should be write-response-header
- and before calling it, the current-request parameter should be
changed to the request argument.

I don't change the wiki because I'm not really sure of this (we can
use the code of the http egg example instead).

Cheers,
Thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] define not using define

2008-01-25 Thread minh thu
Hi,

Is it possible to register symbols in Chicken, just as a global
(define ...) would do from arbitrary code?

I'd like to be able to write (setting 'color '#f32(1 0 0 0)) and have
the same effect
than a (define color (make-parameter '#f32(1 0 0 0)) unless the color procedure
already exists.

Is it possible to define 'setting' as a procedure and not as a macro
(or am I limited to use 'setting' at the top level (I don't mean the
repl))?

The fact color is procedure is nice for me, I'd rather call (color)
than (look-up 'color).

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] define not using define

2008-01-25 Thread minh thu
 [...]
 On a tangent, this reminds me of a macro I use. I wanted to introduce
 formal hook-points in the main program, and let the run-script inject
 hook-procedures into the main code if desired. The macro
 [...]

I guess you could now use the advice egg (http://chicken.wiki.br/advice).
Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] Re: define w/o define

2008-01-25 Thread minh thu
2008/1/25, Kon Lovett [EMAIL PROTECTED]:
 Hi,

 Also see the environments egg.

 #;10 (use environments)
 #;11 bar
 Error: unbound variable: bar
 #;11 (environment-set! (interaction-environment) 'bar 45)
 #;12 bar
 45


Thanks all, I should have what I need :)
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] define not using define

2008-01-25 Thread minh thu
Hi,

Elf, does your use of callcc has the same purpose of Graham's eval
(i.e. define at the global scope) ?

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] ssp-handler

2008-01-14 Thread minh thu
Hi,

It seems http://trac.callcc.org/changeset/7190 hasn't get to the spiffy egg.
Should I get spiffy from svn ?

Thanks,
mt


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] local metafile use to create an egg

2008-01-14 Thread minh thu
Hi,

Currently, I use a makefile to build an egg. Is it possible to create
it with the same process .meta file is automatically used when
committing in svn (i.e. locally, with no real commit)?

Thanks,
mt


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] local metafile use to create an egg

2008-01-14 Thread minh thu
14 Jan 2008 18:02:15 -0200, Mario Domenech Goulart [EMAIL PROTECTED]:
 Hi minh thu,

 On Mon, 14 Jan 2008 15:02:55 +0100 minh thu [EMAIL PROTECTED] wrote:

  Currently, I use a makefile to build an egg. Is it possible to create
  it with the same process .meta file is automatically used when
  committing in svn (i.e. locally, with no real commit)?

 I don't know if I understand what you want.  Maybe the script below
 can do the trick.  It packs an egg based on the information from the
 meta file found under the given egg directory.

 It assumes tar is installed and it doesn't generate the HTML
 documentation from eggdoc or wiki files (just ignores it).

 Example of use:

 $ csi -s eggify.scm ~/src/chicken-eggs/spiffy/trunk
 spiffy-base.scm
 spiffy.scm
 ssp-handler.scm
 web-scheme-handler.scm
 cgi-handler.scm
 simple-directory-handler.scm
 spiffy.setup

 $ cp ~/src/chicken-eggs/spiffy/trunk/spiffy.egg .

 $ chicken-setup spiffy.egg
   gzip -d -c ../spiffy.egg | tar xf -
   /usr/local/chicken-2.732/bin/csc -feature compiling-extension -s -O2 
 -no-trace spiffy-base.scm
   /usr/local/chicken-2.732/bin/csc -feature compiling-extension -s -O2 
 -no-trace ssp-handler.scm
   ...
   rm -fr spiffy.egg-dir


 8

 (use posix (srfi 1))

 (define (eggify eggdir)
   (let* ((metafiles (glob (make-pathname eggdir * meta
 (when (null? metafiles)
   (die Couldn't find any metafile.))
 (let* ((metafile (car metafiles))
(metadata (handle-exceptions exn
 (die metafile : syntax error.)
 (with-input-from-file metafile read)))
(egg (car (alist-ref 'egg metadata)))
(eggname (pathname-file egg))
(doc-from-wiki (alist-ref 'doc-from-wiki metadata))
(eggdoc (alist-ref 'eggdoc metadata))
(files (alist-ref 'files metadata)))
   (when (or doc-from-wiki eggdoc) ;; ignores documentation
 (set! files (delete (make-pathname #f eggname html) files)))
   (change-directory eggdir)
   (system (string-append tar czvf  egg   (string-intersperse 
 files))

 (define (usage #!optional exit-code)
   (print Usage:  (program-name)  egg-dir)
   (when exit-code
 (exit exit-code)))

 (define (die . msg)
   (print (apply conc msg))
   (exit 1))

 (let ((args (command-line-arguments)))
   (if ( (length args) 1)
   (usage 1)
   (let ((arg1 (car args)))
 (if (member arg1 '(-h --help -help))
 (usage 0)
 (begin
   (unless (file-exists? arg1)
 (die eggdir  does not exist.))
   (eggify arg1))

 8

 Best wishes,
 Mario


Gee, I wasn't asking for that much ! You correctly understood,
although I was talking about the code used by the svn hook.

Thanks a lot,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] Ending input reading without quit csi

2008-01-08 Thread minh thu
Hi,

Say I write in csi somethign like
(for-each-line (lambda (line) (display line)))
which will read from current-input-port,

how can I end the input (if I use ctrl-d, it stops csi too) ?
How can I make csi display another prompt while reading ?

Thanks,
mt


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Ending input reading without quit csi

2008-01-08 Thread minh thu
2008/1/8, felix winkelmann [EMAIL PROTECTED]:
 On Jan 8, 2008 12:09 PM, minh thu [EMAIL PROTECTED] wrote:
  Hi,
 
  Say I write in csi somethign like
  (for-each-line (lambda (line) (display line)))
  which will read from current-input-port,

 Correct.

 
  how can I end the input (if I use ctrl-d, it stops csi too) ?

 You will have to handle it yourself. One way would be to
 check the input (say, an empty line) and abort the iteration:

 (call/cc
   (lambda (continue)
 (for-each-line
   (lambda (line)
 (when (string=?  line) (continue #f))
 ...

  How can I make csi display another prompt while reading ?

 #;1 (repl-prompt (lambda () ::: ))
 ::: 123
 123
 ::: 456
 456
 ::: (+ 3 4)
 7


 cheers,
 felix


Great, thanks
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] how to join two threads ?

2007-12-29 Thread minh thu
2007/12/30, Thomas Christian Chust [EMAIL PROTECTED]:
 minh thu schrieb:

  [...]
  I'd like to know how I can make an srfi-18 thread wait for the
  completion of another one.
  [...]

 From the SRFI-18 standard document:
 [...]

Oh! I've looked at the chiken wiki page only. Sorry and thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] reading available data from a port

2007-12-28 Thread minh thu
  2/
  Actually, what is to be read from i in 1/ is something like tag 
  Note the ending /tag will appear later after some enclosed elements.
  (This is an XML stream defined by XMPP core (rfc3920).)
  Is it possible to use SSAX to read just an opening tag ?

 This should be possible, but I have no experience with SSAX, so perhaps
 someone who has can give a hint.

 Normally, you should be able to assume that you can read a complete
 XML element, or not? I'm no XMPP expert, but if the format is XML, you
 should be able to simply read complete elements and perhaps use
 multithreading and tcp read/write timeouts to handle incomplete
 data (if that is what you are trying to do here).

You can read a complete element only in the stream.
The stream is opened with an opening tag. The closing corresponding tag will
appears later or never.

But I think I can reuse SSAX:make-parser to simply emit SXML for the complete
elements embedded in the stream. The creation of SXML will be nearly a
copy of the SSAX:XML-SXML.

(Thus, my problem is gone, just need coding :)
Cheers,
mt


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] reading available data from a port

2007-12-27 Thread minh thu
Hi,

1/
I use tcp-connect to get i and o.
If I do (read-line i), it works if there is actually a \n.
If I do (read-string a-number i), it works if I don't try to get more
than available data.
(Assume the i isn't closed because the server will write later.)

How do I get what is already present ?
Should I instead use read-token until I have all what I want ?

2/
Actually, what is to be read from i in 1/ is something like tag 
Note the ending /tag will appear later after some enclosed elements.
(This is an XML stream defined by XMPP core (rfc3920).)
Is it possible to use SSAX to read just an opening tag ?

Thanks a lot and merry christmas !
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] XMPP egg ?

2007-12-22 Thread minh thu
Hi,

has someone already begun an (sxml based) xmpp egg ?

Cheers,
mt


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] how to use define-macro to...

2007-12-20 Thread minh thu
Hi,

1/
I'd like to repeat this code for a lot of operators (not just + as
in the following).
How can I do that ?

(define old+ +)
(define (+ a b)
  (if (or (instance-of? a behavior) (instance-of? b behavior))
(create-behavior (list a b) old+)
(old+ a b)))

The problem is how to capture the old + (as old+) to use it in the redefinition.

2/
I could write the following at any place I want to print debug info.

(cond-expand
  (debug-behaviors (printf Debugging...~N))
  (else)

Note the particular symbol debug-behaviors.

But it's boring; I would prefer have a debug macro instead :

(debug
  (printf Debugging...~N))

But I don't know how I can make it expends to nothing as in the else
clause of the
cond-expand. I use this :

(define-macro (debug rest)
  (cond-expand
(debug-behaviors rest)
(else '(noop

I have to use the noop procedure.

Also, can I write a higher macro to generate the debug one with a
particular debug-something symbol ?

Thanks,
mt


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Re: chicken lottery!

2007-12-14 Thread minh thu
2007/12/14, Alex Shinn [EMAIL PROTECTED]:
 On Dec 11, 2007 10:56 PM, Alex Shinn [EMAIL PROTECTED] wrote:
  Ladies, gentlemen and other, we've reached 350 eggs,
  which means some lucky contributor is going to be the
  proud owner of their very own Chicken T-shirt!  This
  time we're inviting you all to witness the choosing live.

 ... and the winner is Terrence Brannon, author of the
 matpack egg!  We'll be sending a TV crew to deliver
 the T-shirt and interview Terrence on his good fortune!

Congratulations ! (I missed the live die roll)
mt


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] chicken lottery!

2007-12-11 Thread minh thu
 [snip]

   Roll #eggs  Name
  
   1-23  23Ivan Raikov
  24-32   9Arto Bendiken
  33-40   8Tony Sidaway
  41-43   3Will Farr
  44-46   3Ben Kurtz
  47-49   3Vo minh Thu
 [snip]

Hehe tha'ts nice but it's unfair to give me such a range, none of my
eggs are usable by other people than me (although I don't give up and
will hopefully work on them later).

Cheers,
mt


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] chicken scheme + gui on Nokia n800 or n810?

2007-12-06 Thread minh thu
2007/12/6, Elf [EMAIL PROTECTED]:

 heh, are the n810s out yet?  i wanted to get one and port chicken to it as
 my new organiser...

 -elf
I don't know where you are but e.g.
expansys.com
mt


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] chicken scheme + gui on Nokia n800 or n810?

2007-12-06 Thread minh thu
John :
 [...]
 In terms of GUI, well I just use GTK+ as IMO it is fairly high-level
 and abstracted enough from raw C that it is pretty easy to use. You
 also get the benefit of cut 'n pasting a lot of pre-written code if
 you go this route. Chicken embeds easily into a GTK+ app. I just do
 the interface code in GTK+ and backend in Chicken.

Do you mean you write the ui with gtk+ in C ? How is the wiring
between that and Chicken done (which one calls the other and how) ?
Thanks
mt


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] synonyms for module sought

2007-09-07 Thread minh thu
2007/9/7, Moe Aboulkheir [EMAIL PROTECTED]:


 On Fri, 7 Sep 2007 09:38:12 +0200, felix winkelmann [EMAIL PROTECTED] wrote:
  could came up with these, so far:
 
 module   (boring)
 package
 structure  (misleading)
 library (impossible, due to political reasons, and also misleading)
 component   (nah...)
 enclosure(...)
 
 Has anybody more to suggest?

 none are very good:

 unit, accessory, ingredient, element, constituent


hello, entity, basement, ground, layer, fruit, wire, armature, spark,
neuron, squad,
group, level, to-be-reus'd, stratum, album, aquarium, ball, lingery,
catwalk, page,
bullet, ammo, sorry, hope, it, helps, a, bit, minh thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] preferred gui library

2007-07-09 Thread minh thu

Brandon wrote :


Lightweight can be a valid design choice.  I'm just pointing out the
strategic consequences of fixating on that.  I mean, let's face it,
people intoned all those ideas and desires some months ago and nothing
has come of it.



Hehe, only because I'm damn slow ... but I'm still on it (I mean the
opengl only stuff).
It needs lot of cleaning and documentation before I can speak of it...

(I'm still reading the list from time to time but I've no more
permanent access to the internet and, unfortunatly, I'm slow at what I
want to do with chicken)

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Re: Another request (bigger this time)

2007-04-05 Thread minh thu

2007/4/5, John Cowan [EMAIL PROTECTED]:

Kon Lovett scripsit:

 Please get the current Chicken darcs head  build. Then evaluate the
 following:

cygwin - windows - unknown : #(32 46 16 4 3 107 3 93 #t 18000) : #(32 46 20 4 3 
107 3 93 #f 18000) : 1175719592.0 : 1175719592.0 : EDT

--
John Cowan  [EMAIL PROTECTED]  http://ccil.org/~cowan
Linguistics is arguably the most hotly contested property in the academic
realm. It is soaked with the blood of poets, theologians, philosophers,
philologists, psychologists, biologists and neurologists, along with
whatever blood can be got out of grammarians. - Russ Rymer


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Hi,
Is the request still active ? I don't know which one is ended in the
Thank you mail.
Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Another request (bigger this time)

2007-04-05 Thread minh thu

2007/4/5, felix winkelmann [EMAIL PROTECTED]:

On 4/4/07, Kon Lovett [EMAIL PROTECTED] wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 Hi,

 I just released a fix for Windows that should correct the problem of
 using the C 'timezone' since it is a function w/ Cygwin. I think all
 builds on Windows can use '_timezone'. However I cannot test it since
 I cannot build anymore on Windows.

 Please get the current Chicken darcs head  build. Then evaluate the
 following:

 csi -n -e '(require-extension posix) (print (build-platform)  -
 (software-type)  -  (software-version)  :  (seconds-local-time
 (current-seconds))  :  (seconds-utc-time (current-seconds))  :
  (local-time-seconds (seconds-local-time (current-seconds)))  :
  (utc-time-seconds (seconds-utc-time (current-seconds)))  :
  (local-timezone-abbreviation))'


This might be too late, but:

gnu -
unix - linux : #(46 35 9 5 3 107 4 94 #t -3600) : #(46 35 7 5 3 107 4
94 #f -3600) :
1175758546.0 :
1175758546.0 :
CET

That's Göttingen, Germany, CET +1 (I think)


Yes, CET is GMT + 1 and Germany is in daylight saving time which means
CET + 1, ie. GMT + 2.
Look here:
http://www.timeanddate.com/worldclock/city.html?n=995
http://wwp.european-union-eu.com/germany/time.htm
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] how to map Scheme string to void* instead of char*

2007-04-04 Thread minh thu

Hi,

I'm a bit lost :
I'm using foreign-parse to write bindings for the QuesoGLC library [1]
(which I'll release as BSD3 egg; the library itself is LGPL).
Some functions of this library accept string as argument; the type is
void*, not char*.
Building the bindings seems to go well but when I want to use such a function,
Chicken tells me bad argument type - not a pointer.

I guess I'll have the same problem with void* return types.
How should I handle those cases ?


[1] http://quesoglc.sourceforge.net/


Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] how to map Scheme string to void* instead of char*

2007-04-04 Thread minh thu

2007/4/4, felix winkelmann [EMAIL PROTECTED]:

On 4/4/07, minh thu [EMAIL PROTECTED] wrote:
 Hi,

 I'm a bit lost :
 I'm using foreign-parse to write bindings for the QuesoGLC library [1]
 (which I'll release as BSD3 egg; the library itself is LGPL).
 Some functions of this library accept string as argument; the type is
 void*, not char*.
 Building the bindings seems to go well but when I want to use such a function,
 Chicken tells me bad argument type - not a pointer.

 I guess I'll have the same problem with void* return types.
 How should I handle those cases ?


How do you wrap those library functions? With easyffi? Then, you can
just change the argument type declarations to char *.


Yes, with easyffi (I use foreign-parse, so doesn't it imply it's easyffi ?).
Changing C declarations to char* works, thank you.

Can I request a repository for this egg ?
I think 'glc' would be an appropriate name.

Thank you,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] QuesoGLC bindings

2007-04-04 Thread minh thu

Hi,


From its homepage, QuesoGLC is a free (as in free speech)

implementation of the OpenGL Character Renderer (GLC). QuesoGLC is
based on the FreeType library, provides Unicode support and is
designed to be easily ported to any platform that supports both
FreeType and the OpenGL API [1]. It's under LGPL, the egg under BSD.

The glc egg is a complete (but not already tested) binding for
QuesoGLC 0.6, the latest version (2007-03-13).

This is my first egg release and some things are blurred.
In particular, I'd like to wait feedback from people on Windows and
MacOS before setting the version to 0.1.
If you have time, grep TODO on the sources, there're only four of them :)

I guess the egg will be available through chicken-setup only when I
make a version in /tags. So it's available for now from [2].

[1] http://quesoglc.sourceforge.net/
[2] svn co https://galinha.ucpel.tche.br/svn/chicken-eggs/glc

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] A request

2007-04-04 Thread minh thu

2007/4/4, Kon Lovett [EMAIL PROTECTED]:

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Folks,

Please evaluate the following on your available platforms  send me
the results.

csi -n -e '(require-extension posix) (print (build-platform)  -
(software-type)  -  (software-version)  :  (seconds-local-time
(current-seconds)))'

Thank you,


You're welcome:
gnu - unix - linux : #(26 0 19 4 3 107 3 93 #t -3600)

thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] A request

2007-04-04 Thread minh thu

2007/4/4, Kyle R. Burton [EMAIL PROTECTED]:




   Please evaluate the following on your available platforms  send me
   the results.
  
   csi -n -e '(require-extension posix) (print (build-platform)  -
   (software-type)  -  (software-version)  :  (seconds-local-time
   (current-seconds)))'
 


 gnu - unix - macosx : #(46 14 13 4 3 107 3 93 #t -14400)
 gnu - unix - linux : #(47 18 13 4 3 107 3 93 #t 18000)


King of Prussia, PA, USA

(it's near Philadelphia PA)

___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users




I'm CEST, UTC/GMT +2 hours
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] Unicode inside csi

2007-04-03 Thread minh thu

Hi,

I try to print correctly unicode on the console (under Linux).
What should I do for this ?

I don't understand the following, can someone explain it ?

Version 2.6 - linux-unix-gnu-x86 - [ libffi dload ptables applyhook ]
(c)2000-2007 Felix L. Winkelmann
; loading /home/mt/.csirc ...
; loading /usr/local/lib/chicken/1/readline.so ...
; loading library regex ...
#;1 (char-integer (string-ref \u00f9 0))
195
#;2 #x00f9
249
#;3 (print ù)
ù
ù
#;4 (char-integer (string-ref ù 0))
195
#;5 (print (string-ref ù 0))
�
#\�
#;6 (print 'ù')
ù
|ù|

In particular, why value of line 1 is 195 and value of line 2 is 249 ?
Actual decimal value for ù is 249.

Thanks,
thu
___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] Re: Unicode inside csi

2007-04-03 Thread minh thu

2007/4/3, minh thu [EMAIL PROTECTED]:

Hi,

I try to print correctly unicode on the console (under Linux).
What should I do for this ?

I don't understand the following, can someone explain it ?

Version 2.6 - linux-unix-gnu-x86 - [ libffi dload ptables applyhook ]
(c)2000-2007 Felix L. Winkelmann
; loading /home/mt/.csirc ...
; loading /usr/local/lib/chicken/1/readline.so ...
; loading library regex ...
#;1 (char-integer (string-ref \u00f9 0))
195
#;2 #x00f9
249
#;3 (print ù)
ù
ù
#;4 (char-integer (string-ref ù 0))
195
#;5 (print (string-ref ù 0))
�
#\�
#;6 (print 'ù')
ù
|ù|


Ouch, forget the last one :)



In particular, why value of line 1 is 195 and value of line 2 is 249 ?
Actual decimal value for ù is 249.

Thanks,
thu

___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Unicode inside csi

2007-04-03 Thread minh thu

2007/4/3, Thomas Christian Chust [EMAIL PROTECTED]:

minh thu wrote:

 [...]
 In particular, why value of line 1 is 195 and value of line 2 is 249 ?
 Actual decimal value for ù is 249.
 [...]

Hello,

by default, CHICKEN's strings are bytestrings, not character strings.
Therefore the string-ref call is returning the first byte of the
extended character marker of UTF-8, not the character itself.

If you want CHICKEN's strings to behave as UTF-8 character strings, have
a look at the utf-8 egg.

cu,
Thomas




Thanks Thomas, Thanks John !
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] noobie question about chicken/swig/csi

2007-04-02 Thread minh thu

2007/4/2, minh thu [EMAIL PROTECTED]:

2007/4/2, Tato Norren [EMAIL PROTECTED]:
 Hi,
 I feel like an idiot asking, but what exactly are the sequence of
 commands needed to make the following C function callable from the
 chicken interpretor? on Linux.

 //test.c
 double test(double x){
 return x * x;
 }

 //test.i
 %module test
 %{
 double test(double);
 %}

 thanks,
 tato


Hi,

For simple things like that, don't use swig.
In a .scm file, write this:
(define test
  (foreign-lambda double test double))

'test' is the name in Scheme.
test is the name in C.
The first double is the return type.
The last double is the arg.

Compile the .scm and the .c files together with csc -s.
Note the -s whiwh will make a shared library : a .so file.
Now assuming the file were called tt.*, you can bring the function in csi with
csi -require-extension tt
or calling (require-extension tt) from a script.

For more complete explanation, see here:
http://chicken.wiki.br/Interface to external functions and variables

There is another way : just use the declaration of your function with
foreign-parse, it will automatically make it available in Scheme.

Use the Search Box and your left on
http://chicken.wiki.br/.

Cheers,
thu



Re,
I forgot to say that you need to declare your function.

Here an example:
[EMAIL PROTECTED]:~/projets/chicken/test$ cat test.c
/* test.c */

double
test( double x )
{
 return x * x;
}

[EMAIL PROTECTED]:~/projets/chicken/test$ cat tt.scm
; test.scm

; you can replace the following with a (foreign-parse ...) 
#
double test( double );
#

; ... then you don't need this !
(define test
  (foreign-lambda double test double))
[EMAIL PROTECTED]:~/projets/chicken/test$ csc -s test.c tt.scm
[EMAIL PROTECTED]:~/projets/chicken/test$ csi -require-extension tt

 //  /
___ (______ ( ___  ___
||   )| ||___)|___)|   )
|__  |  / | |__  | \  |__  |  /

Version 2.6 - linux-unix-gnu-x86 - [ libffi dload ptables applyhook ]
(c)2000-2007 Felix L. Winkelmann
; loading /home/mt/.csirc ...
; loading /usr/local/lib/chicken/1/readline.so ...
; loading library regex ...
; loading ./tt.so ...
#;1 (test 5)

#;1
#;1 (test 5)
25.0
#;2 ,q

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] noobie question about chicken/swig/csi

2007-04-02 Thread minh thu

2007/4/2, Alex Queiroz [EMAIL PROTECTED]:

Hallo,

On 4/2/07, Graham Fawcett [EMAIL PROTECTED] wrote:

 Neat, huh? There's also the easy-ffi, lazy-ffi, etc. Chicken's really
 good at this kind of thing, if you're the kind of person who likes
 having choices.


 I guess there are so many ffi choices because it must be a pain
to write pure C extensions, judged by what I've seen from chicken's
output. But I think that's inevitable given how Chicken uses the
machine stack.


Well, in fact I found very practical to made that sort of stuff.
Write your C code then just a bit of Scheme so that Chicken is aware
of the C code. Compile, that's it.

What's more, given chicken-setup, it's also easy to make your library
available to the community.

Graham, I did the example that way because I like to separate C from Scheme :
- if I want to move more to C side for performance, it will be easier
- I keep in my head the possibility to make the library available as
widely as possible by keeping it in C and making bindings for other
languages.

Cheers,
(And I get caught by April 1 :)
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Rewriting Svnwiki in Java or PHP

2007-04-01 Thread minh thu

2007/4/1, Alejandro Forero Cuervo [EMAIL PROTECTED]:

I have been having some conversations with Nelson Castillo and other
Svnwiki users and contributors.  Some of us believe that by rewriting
Svnwiki entirely in another programming language the number of
contributions would increase significantly.  A lot of people would
like to contribute but they lack the programming skills required to
learn Scheme.

We are considering rewriting it in either Java or PHP.  I'm leaning
more towards Java but a very good case for PHP has been made by
Arhuaco.  We have also considered Python, Ruby and C#.

There are more details here:

http://wiki.freaks-unidos.net//weblogs/azul/rewriting-svnwiki

It should be said that we haven't made up our minds yet.  The amount
of efforts to rewrite Svnwiki in another language shouldn't be
underestimated.  However, unless a good case is made for keeping it in
Scheme, chances are we will switch to another language.

Thoughts?



It's a sad news : every other project starter could say then : hey,
look, they turned their code to something else for lack of
contribution.

I guess it would not bring as many people than using Java but maybe
you can consider the following:
consider the time of a rewrite and consider the time to make the
extant code be well documented, maybe to some part, looking like a
(Scheme) tutorial.
People like Real World code.

About Ruby or Python, am I wrong by thinking that people who know Ruby
or Python are a good audience for that kind of document ? For example,
in programming.reddit, Haskell, Ruby, Scheme are well represented.

I mean that if you switch to Ruby (not Java), you will gain community
but the *kind* of programmer will be the same (i.e. functionnal or at
least not-main-stream languages lovers). So keeping Scheme might not
be so bad to attract them.

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] Aliasing a module variable with a variable from the user ?

2007-03-29 Thread minh thu

Hi,

Say I've a module with a bunch of procedures that use a global variable.
Call it *global*.

Can I use that module and specify that *global* is an alias of *my-global* ?
(So that every procedures of the above module now work actually on *my-global*.)

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] multiple define from a macro

2007-03-26 Thread minh thu

2007/3/26, Arto Bendiken [EMAIL PROTECTED]:

On 3/26/07, minh thu [EMAIL PROTECTED] wrote:

 (define-macro (csg:make-mode-handler mode)
 ...
 `(define ,press '())
 `(define ,release '())
 `(define (,name+) (print hello+))
 `(define (,name-) (print hello-

 Only the later `(define ...) is produced. How can I have the three
 other ones produced too ?

Wrap the `define' forms in a `begin', like so:

  `(begin
 (define ,press '())
 (define ,release '())
 ...)


Thank you very much!
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : Re : [Chicken-users] 3D update

2007-03-23 Thread minh thu

2007/3/23, Brandon J. Van Every [EMAIL PROTECTED]:

minh thu wrote:

 I sought a kind of german demo which featured procedural content to
 make a very small exe that holds everything. It was popular at the
 time but I forgot the name.

.theprodukkt ?  http://www.theprodukkt.com/


Yes  :)
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] is foreign-parse enum possible ?

2007-03-12 Thread minh thu

Hi list,

Is it possible to FOREIGN-PARSE a C enum ?
And a C struct ?

Otherwise, it's really a nice tool.

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Re: [Chicken-hackers] egg-post-commit

2007-03-08 Thread minh thu

2007/3/8, felix winkelmann [EMAIL PROTECTED]:

On 3/7/07, Alejandro Forero Cuervo [EMAIL PROTECTED] wrote:

 egg-post-commit should only automatically upload an egg if (1) it
 detects a change in the directory for the egg's latest release and (2)
 the egg's directory doesn't have the 'autoupdate' Subversion property
 set to 'no'.

 The directory for an egg's latest release would be:

 1. If the egg has a 'tags' directory,

 1.1. If the 'tags' directory has a 'latest' property set to 'foo',
 the directory is 'tags/foo'.

 1.2. Otherwise, the directory under 'tags' corresponding to the
 greatest version number.

 2. The egg's directory.


I'll do it exactly that way.


Hi,

What if the directory contains multiple eggs ?
I ask this because I think I'll end up with lot of eggs for the
gl-suite project.
Is it better to have, gl-display-*, gl-font, gl-math, gl-repl,
gl-samples, gl-etcaetera,
or simply gl-suite ?
(If the former, Felix, prepare to have more request from me:)

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] Re: [Chicken-hackers] egg-post-commit

2007-03-07 Thread minh thu

2007/3/7, felix winkelmann [EMAIL PROTECTED]:

On 3/6/07, Kon Lovett [EMAIL PROTECTED] wrote:
 
  BTW, shouldn't we really start thinking about automatic upload?

 Please, what does the above phrase mean? Automatic egg post when the
 svn repo copy of the source is changed? I hope not.


Well, (un)fortunately, it means yes. The problem is that it is gettting
more
and more involved having the proper setup for running egg-post-commit.
Additionally I'd find it more convenient to have automatic uploads on
commit since running the upload script manually can get tedious after
a while. If you prefer to do it manually, I guess we should provide an
option (as an svn property). So my proposal:

- egg-post-commit can still be used as normal
- if an egg has been changed by a commit, has a .meta file, all files
  listed in the .meta file are available and the directory does not have
  a noautoupload property (or whatever), then it is uploaded
  automatically to call/cc.org.

Would that be acceptable?


Hi,

When you make a change, don't you up the version ?
If it's the case, automatic upload would only involve new directory under tags.

Also, in the .meta file, maybe it would be wise to have an option to
disable the .meta file. And an option to disable the .meta file after
one run.

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : Re : [Chicken-users] Re: [Chicken-hackers] egg-post-commit

2007-03-07 Thread minh thu

2007/3/7, felix winkelmann [EMAIL PROTECTED]:

On 3/7/07, minh thu [EMAIL PROTECTED] wrote:

 When you make a change, don't you up the version ?

No. That's the job of the developer.


I was talking a bout the developer when saying you...



 If it's the case, automatic upload would only involve new directory under
tags.

 Also, in the .meta file, maybe it would be wise to have an option to
 disable the .meta file.

Good idea.


So, this one means don't run the script.



And an option to disable the .meta file after
 one run.

I don't understand this one. Could you explain?


And this one means run it only once then change the .meta file so
it's disabled.

I don't know if it would be really convenient but it allows the
developer to set run once, commit its changes and be sure that its
changes are reflected, but also that it won't happen for the next
changes.

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : Re : Re : Re : Re : [Chicken-users] Scheme (LISP) editing

2007-03-04 Thread minh thu

2007/3/3, Zbigniew [EMAIL PROTECTED]:

There are about a billion ideas flying around and I've lost track of
your overall intent.  If you want to develop a 3D program
interactively you can just start it with csi or call (repl) and issue
GL commands and debug interactively like normal.  For example it is
easy to run the sdl-gears example and change the lighting
interactively, just throw the animation loop in its own thread.  If
you want to make a console in-game for some reason (e.g. you are on an
embedded system) with full access to your environment, you could do it
the same way, only modify Felix's repl code to do I/O to your console,
or use a pseudo terminal to bridge the repl to the console instead.
Of course on an embedded system, assuming your goal is not just to
look pretty, you could just use a serial console and retain the full
interactive development abilities of Emacs on your dev machine.


My intent is pretty close of what you say. I just want to provide a
simple repl directly inside the OpenGL window. I see mostly four
reasons to do this.
- csi + readline + thread is problematic (from my test, maybe I'm wrong).
 Although I say 'simple' some file saving/reading would be great.
 csi without readline is very poor to make real editing session.
- I've to switch from vim to emacs + quack + paredit. In a sense, I'm switching
 to OpenGL programming with Chicken, that's enough for me for the moment.
 Having the repl in OpenGL is a practical, reusable block of code.
 It can serve in a real program, see autocad, or maya (mel language),
and so on.
- Once it's done, people have ideas to experiment with. That's what make you
 lost track :)
- I've forgot the fourth point, something like it's fun :)

Oh, this is my intent regarding the opengl repl. I also want to
provide other simple building blocks. Font system is one.
Camera/projections library is another one.

Editor stuff was just discussions, I'm not going to do it but I
believe once some building blocks are done, people will try to do
things...


On the other hand if you are just aiming to write a GL-based terminal
there are plenty of examples out there, and if you're aiming for the
full Squeak monty, then, good luck :)


I don't know Squeak. I've heard about Morphs (for Smalltalk I think)
but that's all. I need to look at it.

Cheers,
thu


On 3/3/07, minh thu [EMAIL PROTECTED] wrote:
 By the way, I don't plane to write an IDE neither an editor. But I
 plane to write a repl. Once it's done (plus some other basic stuff), I
 thing every body interested could contribute/test/have fun with some
 *implemented* ideas.




___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : Re : Re : Re : [Chicken-users] Scheme (LISP) editing

2007-03-03 Thread minh thu

2007/3/3, Peter Keller [EMAIL PROTECTED]:

On Sat, Mar 03, 2007 at 12:22:34AM +0100, minh thu wrote:
 Do you have an opinion regarding havind bare s-exp or sxml
 representation of the code ?

Honestly, the only thing xml is good for is for interchange of data
since so many people agree on what it looks like--but I'm bitter. :)

If you designed your own s-exp structures for code representation, or you
used sxml, you still have the arduous task of deciding what the actual
information representation structure will look like. You can't escape
that real part of the work and it is just as difficult in either form.

The nice thing about either method is that it will always be convertable
to the other representation form. So, I'd say pick a native model
representation form (probably raw s-exp) which best captures the problem
domain of the idea and write everything to use that.  You can always
read/write sxml representations of that model to trade between other
people. I recommend this because the native model view of the problem
domain, if well designed and efficient, means a helluva lot less data
structure conversion code to manipulate it.


At first sight, I would use bare s-exp ...


The tricky part is that since this is an editor, it has to be line, and
also, s-exp oriented. Sometimes those might conflict in interesting ways,
especially in terms of incomplete forms or just non-scheme code.


... and add new forms along the line of (comment ...), ...


As for ideas for features the editor (which I'm imagining can be a scheme
IDE) should have, I can spew them forever:

1. Code is never thought about as being in files. Instead, the user
creates views of codes.  Initial (and permanently available) views are
human constructed collections of related code, e.g., all codes relating
to some hash table implementation.  This is a little different than say
eclipse because eclipse only shows one class at a time, and you can't
really group classes into logical blocks (unless they are part of a
package, which might not be the case in your mind), and it is different
than VC++ because that is file oriented, or suffers from the same fine
granularity problem as eclipse with the class view (and friends).

Here is a very subtle psychological observation of how humans write code.
We programmers create a 2 dimensional plane which create a slice
through the high dimensional execution space of conceptually linear
algorithms in a (usual) top down fashion on said plane. Function invocations
can be thought of as moving in a direction perpendicular to the plane
of viewing to another plane which contains said implementation.

This is a product of both our reading/language skills and because we
copied those skills when it came time to create computers. In hindsight,
we had no other reason to pick anything different, but to continue it
now is a damn dirty shame

The problem is that while we can write the code that way, debugging
_unanticipated execution flow problems_ (something that happens every
day when writing code) or looking at it from other meaningful slices is
impossibly difficult and done with extreme pain because we are stuck with
the initial (and only) view that we had originally created. An editor like
eclipse tried to solve this by making a 2d view the smallest conceptual
unit possible as defined in the language (a class). In my mind, this
is too damn fine grained, since if a class references a bunch of other
classes (and they always do) you end up having a stack of windows and
digging through them to follow a code path of execution. By the time you
finish clicking the mouse, not only are you lost, but you probably can't
get back to where you were. Traditional vim/emacs goes the other extreme,
you are left with the exact 2D slices you used to create the software
and come hell or high water you will never be able to get a complete
picture of an execution path or other aspect-like query through many
(possibly dozens) of 2D slices. I *HATE* that.


Agreed. It should be possible to edit the code without jumping around
but by following execution, a bit like you edit a sequence diagram :
the diagram is unrolled.


2. With views as a first class entity, now you can start to perform some
extremely powerful source queries, like: give me a view of everyone who
uses a particular function in one editor pane (think of a traditional
window of text in an editor), perform a callgraph analysis of this
function and give me an editor pane of all the functions it ever ends
up calling, give me an editor pane of all leaf functions, show me all
functions where I perform recursion, show me all functions which match
a regex, show me all functions which have in them a specified s-exp,
show me all functions where this global variable is accessed, etc,
etc, etc.  It becomes easy to imagine a map/filter like source code
query system: (filter all functions that use this global variable,
then map this tree-rewriter across the enclosing form

Re : [Chicken-users] Scheme (LISP) editing

2007-03-02 Thread minh thu

Thank you for the paredit reference. I wasn't really looking for any
such thing at them moment but I will try it when I get the time to
migrate from BBEdit to Emacs.


I knew about paredit (and tried to use it) but I haven't migrated from
vim to emacs yet, and I don't know if I will...


I'm not entirely sure what Minh Thu is up to but I wanted to remind
him of the enormity of the task of editor creation. Personally I
don't think a pure Chicken IDE is a useful goal.


At first, I don't want to write a (general purpose) editor.

I'm on the gl-display api, have a working gl-display-glx
implementation, have a working gl-font (based on freetype)
font-loading and text-printing egg.

Everything is very loose and I will release them later, when I think
it's worth to be seen (and ready for discussion (The loose aspect
would make very poor discussion)).

Now, my goal is to write 3d computer graphics code with Chicken (and C).
And more and more my goal is to write it *inside* Chicken :
I've began to write a gl-repl : it takes keyboard input, shows the
characters with gl-font, then feed the expression to Felix's eval.
It's very basic and I want it to be more practical  and kewl.

What this means : have a 3d application in development in your window
and in the same window you have your repl in overlay. I'd like to have
more than a without-libreadline-like repl. It's OpenGL !! I want to
provide nifty escape sequences to gl-print to have nifty colors (and
more :).

I can do this. But the editor is a wish. Open a file in that OpenGL
window, edit it, feed eval with some s-exp from the file and so on.

Anyway, say I'm crazy enough to begin the task. There're options :
- text (i.e. char array) based.
- direct s-exp based. By direct, I mean the data structure is the same
s-exp that will be fed to eval.
- sxml s-exp based.

At first sight, I want to use one of the s-exp based idea. Of course,
for string editing (i.e. anything not a paren : string, numbers,
comments, ...), the first option has to be present.

- direct s-exp : no need to parse, we have READ.
- sxml s-exp : we have sxpath, sedna, ... a lot of things. We need to
specify the sxml representation for any scheme code. Even the one that
results from user-defined macro ?

With s-exp based editing, I guess especially sxml, we can make an
editor that abstracts away the directory/file organisation, but use
extension/modul/unit/define.
(My knowledge about those is very poor at the moment).

One idea : with a sxml representation, could we have a tool that see
if two procedures do (potentially) the same things ?

--

About the s-exp representation for comments.
What about (comment this is a (silly) comment\) ?
And (cmt this comment is about the next form) (cmt and this one
about the previous one) without syntax highlighting, those ';' are
not necessary.

-

Briefly :
A basic gl-repl will exist. I really want a cool a gl-edit but I don't
know how far I can go.

(And hooray for 2.6 !)
Cheers,
Vo Minh Thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : Re : [Chicken-users] Scheme (LISP) editing

2007-03-02 Thread minh thu

2007/3/2, Shawn Rutledge [EMAIL PROTECTED]:

On 3/2/07, minh thu [EMAIL PROTECTED] wrote:
 I'm on the gl-display api, have a working gl-display-glx
 implementation, have a working gl-font (based on freetype)
 font-loading and text-printing egg.

Cool!

How are you rendering the text?  The choices are (AFAICT) use freetype
to generate bitmaps (maybe build a bitmap for each character/font
combination, or maybe render a word at a time or a line at a time) and
display them using glBitmap; use freetype to generate antialiased
pixmaps (same choices for characters, words or lines) and use them as
textures on top of polygons; or somehow convert the font to vertices
and render the text entirely as filled triangles.  I didn't see a way
that the results of glBitmap can be transformed - it goes straight to
the framebuffer, right?  Besides not being antialiased.  The third
method (vertices) might be slow (or is it nowadays?)  So I figured the
second method (textures) has the most promise.  But ideally it should
leverage the power of the GPU somehow, rather than involving Freetype
for every line of text every time it's drawn.  If you render a word at
a time, you can save them to GPU memory as textures and re-use them
every time that word with that font is shown, while still making use
of Freetype's hinting.  If you render a character at a time, the set
of textures becomes smaller, and you gain the ability to transform
each character (like for doing text along a path, for example) but
have to do hinting yourself.



From freetype, I'll query each glyph as a pixmap (8bits) and store

them in a single array of unsigned char. Yes, I do this C side because
I don't want to write a freetype binding.
Once it's done, I upload the array into video memory as a single
texture. Then I create a display list for each char. To render a
string, just call glCallLists. The c array is released since the
texture is held by opengl.
(I say I but I just used the technique from fltk and/or fox)

One think is a bit problematic : each glyph/char means nearly all
8bits ascii code, i.e. 256 chars. So there's no utf-8 support right
now. I don't know yet how to handle it, probably a system of cache.

The fact it's texture (on quads) means you can render in 3d, not only
in screen pixels.
Changing the color is just a call to glColor*.

If you find the thing not correct, just keep in mind it's early code
and I've nearly no experience ... and of course I accept help :)


 Everything is very loose and I will release them later, when I think
 it's worth to be seen (and ready for discussion (The loose aspect
 would make very poor discussion)).

I'd like to see it because I haven't written anything for text display
yet; maybe now I don't need to.


Well, I'll ask to Felix a little place for me svn-side.

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : Re : [Chicken-users] Scheme (LISP) editing

2007-03-02 Thread minh thu

2007/3/2, Peter Keller [EMAIL PROTECTED]:

On Fri, Mar 02, 2007 at 10:27:41AM -0700, Shawn Rutledge wrote:
 On 3/2/07, minh thu [EMAIL PROTECTED] wrote:
 I'm on the gl-display api, have a working gl-display-glx
 implementation, have a working gl-font (based on freetype)
 font-loading and text-printing egg.

 Cool!

Wow, that is cool! Talk about HGR days on the Apple //e! It'd be like
having a console for game code without writing one specifically.


Yes, you have all Chicken available behind EVAL.


I wonder if toplevel could be extended to contain things like objects and or
other graphical things that you can manipulate like variables.



Stuff like:

 (gl-define cube (glutWireCube 2.0))
;; cube shows up in the center of the screen.

 (rotate cube 45 1.0 0.0 0.0)
;; cube rotates on screen.

 (set! cube '())
;; the cube is erased

-pete



Hehe :)
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: Re : [Chicken-users] opengl egg naming scheme

2007-03-02 Thread minh thu

2007/3/2, Zbigniew [EMAIL PROTECTED]:

Isn't the only difference the lack of a colon?  It would be trivial to
auto-generate a shim file with all the defines in it that you could
simply include with your code.Certainly no more difficult than
renaming the opengl egg in the first place.

*If* I started using the opengl egg seriously, I would have done
something similar to convert everything to hyphenated style, e.g.
gl:load-identity, gl:matrix-mode, and maybe eventually just suggested
a patch.  But I haven't used it enough to mind.

Nevertheless I would prefer you not modify the egg itself to do
glLikeThis as it would just be a step backward (IMHO).


Well, I've reverted my code to use the normal opengl egg (so everybody
can use it as is).
But I like your suggestion.

Are defines enough (so to not generate one more function call) ?

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: Re : Re : [Chicken-users] Scheme (LISP) editing

2007-03-02 Thread minh thu

2007/3/2, Shawn Rutledge [EMAIL PROTECTED]:

On 3/2/07, minh thu [EMAIL PROTECTED] wrote:
 2007/3/2, Shawn Rutledge [EMAIL PROTECTED]:
  How are you rendering the text?  The choices are (AFAICT) use freetype
  to generate bitmaps (maybe build a bitmap for each character/font
  combination, or maybe render a word at a time or a line at a time) and
  display them using glBitmap; use freetype to generate antialiased
  pixmaps (same choices for characters, words or lines) and use them as
  textures on top of polygons; or somehow convert the font to vertices
  and render the text entirely as filled triangles.  I didn't see a way
  that the results of glBitmap can be transformed - it goes straight to
  the framebuffer, right?  Besides not being antialiased.  The third
  method (vertices) might be slow (or is it nowadays?)  So I figured the
  second method (textures) has the most promise.  But ideally it should
  leverage the power of the GPU somehow, rather than involving Freetype
  for every line of text every time it's drawn.  If you render a word at
  a time, you can save them to GPU memory as textures and re-use them
  every time that word with that font is shown, while still making use
  of Freetype's hinting.  If you render a character at a time, the set
  of textures becomes smaller, and you gain the ability to transform
  each character (like for doing text along a path, for example) but
  have to do hinting yourself.

 From freetype, I'll query each glyph as a pixmap (8bits) and store
 them in a single array of unsigned char. Yes, I do this C side because
 I don't want to write a freetype binding.
 Once it's done, I upload the array into video memory as a single
 texture. Then I create a display list for each char. To render a
 string, just call glCallLists. The c array is released since the

Well you could use display lists for vertices too, so it's nice to be
using the same call either way to actually do the rendering.

 texture is held by opengl.
 (I say I but I just used the technique from fltk and/or fox)

 One think is a bit problematic : each glyph/char means nearly all
 8bits ascii code, i.e. 256 chars. So there's no utf-8 support right
 now. I don't know yet how to handle it, probably a system of cache.

I understand, thought about that too.  I would want to have UTF-8
support somehow, eventually.  It could be done with code pages
(translate runs of text from UTF-8 to language-specific code pages and
then use different display lists for each code page).  Maybe too much
trouble...and anyway it doesn't work for some Asian languages that
don't fit in 8-bit values.  But if you take the one big font
approach, there would be more display lists to have one for each
character, than if you have one per word.  I also suspect it would be
more efficient to render a word at a time (one polygon for each).

 If you find the thing not correct, just keep in mind it's early code
 and I've nearly no experience ... and of course I accept help :)

Yeah we are both hoping to release as open-source in the end.

I was also wondering what you dislike about the existing OpenGL egg?
You started over, right?



Making one polygon per word, you have to create the texture every time
then ? I don't know, in fact I won't try to benchmark that :)
And in this case, since the primary purpose is repl/editor, one
character at a time is fine.

The opengl egg : I don't like its syntax but I'm nitpicking, I use it now :)

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: Re : [Chicken-users] opengl egg naming scheme

2007-03-02 Thread minh thu

2007/3/2, Zbigniew [EMAIL PROTECTED]:

Eh, while I'm at it, here's one that converts to a more canonical
Scheme style.  Again untested.  Not totally happy with it as stuff
like gl:vertex3iv and gl:tex-coord2iv should probably be gl:vertex/3iv
and gl:tex-coord/2iv (maybe hyphen instead of slash) for readability.
This was just an example anyway.

http://3e8.org/pub/opengl-hyphen-shim.scm


Fine !
At gl:ext-blend-color (commas remain), also are gl:THE_CONSTANTS
correct scheme style ?

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: Re : [Chicken-users] opengl egg naming scheme

2007-03-02 Thread minh thu

2007/3/2, minh thu [EMAIL PROTECTED]:

2007/3/2, Zbigniew [EMAIL PROTECTED]:
 Eh, while I'm at it, here's one that converts to a more canonical
 Scheme style.  Again untested.  Not totally happy with it as stuff
 like gl:vertex3iv and gl:tex-coord2iv should probably be gl:vertex/3iv
 and gl:tex-coord/2iv (maybe hyphen instead of slash) for readability.
 This was just an example anyway.

 http://3e8.org/pub/opengl-hyphen-shim.scm

Fine !
At gl:ext-blend-color (commas remain), also are gl:THE_CONSTANTS
correct scheme style ?

Sorry, stupid me, I was talking about the token at the far right ...



Cheers,
thu




___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : Re : Re : [Chicken-users] Scheme (LISP) editing

2007-03-02 Thread minh thu

2007/3/2, Peter Keller [EMAIL PROTECTED]:

On Fri, Mar 02, 2007 at 02:48:48PM -0700, Shawn Rutledge wrote:
 I was hoping the same words would often reoccur on the display at the
 same time.  There would be a caching scheme, LRU or some such.  Just
 an idea, not sure if it's really better or not.

First off, noone would probably care if you rebind the texture for
every letter, it isn't like there is a bad speed penalty for such small
textures--especially for human reading speeds.

Second, you could make one big texture will all of the letters on it,
and use sub coordinates to pick the letters out as you render them.
Depending on the resolution you want, some cards might not be able to
load the texture, but these days, a 256x256 texture is probably more
than enough. Unicode might be more difficult, but just load more font
pages for what font you'd like to use.

Third, if you wanted individual textures per letter, then you could
sort the letters by frequency, load the first texture and draw all the
letters in the right places on the screen, then bind the next texture.

Seeing on how this is just text that a human reads, and that premature
optimization is the root of all evil, I'd say do option one.

Also, since you have the full bore of a 3d lighted texture mapping
engine behind you, the IDE could be something fantasical to behold. Like
undo buffers could go into the screen towards some vanishing point
and you can select your mouse on undo regions to undo certain things
whenver. It'd be sort of a visualization of vim's undo stacks behind
the text, all dimmed down until you need to see it.

Next idea. Ever see the dock on the new macosx? Suppose you have some
code like this:

file1.scm:
(define foobar (thingy 1 2 3))

file2.scm:
(define thingy (x y z) (+ x y z))

Then when editing file1.scm, if you drag your mouse over foobar
in context (hell, might as well use chords on the keyboard and add a
stroke interface), then the text all pushes to the sides (in a nice
fluid manner) and the definition for (only) thingy fades in enditable
form). You could then edit the definition of thingy (with all aspects of
the editor available to you here), hit the back button or whatever,
and go back to the original place you were. It's be like mixing ctags
and hyperlinks. Debugging could be the same deal, drilling down into
variables and stack frames and structures with hyperlink-like mouse
clicks would make debugging stuff very awesome and fast.

Then, if you'd like, you can save the entire drill down session as a
virtual workspace on some big texture and move to something else the
posibilities are endless. You'd make eclipse look like ed.

Also, the one awesome thing about writing a scheme editor that can do
all of this is that scheme is already in the ast form. You don't really
have to write a serious parser to understand and catagorize everything
like you do for java or C++. Doing stuff like refactoring on the fly in
those languages is painful. In scheme, it could be much easier. You just
walk the source and fix it in place. Parse errors can just be corrected
to the next valid form and you'd probably get it right 99% of the time.

Then, if someone ever invents a fundamental debugging specification format
for scheme (think dwarf2 or stabs), then your debugger/editor can load
it and present all sorts of awesome visual markup information for you.

Highlighted scheme froms and bouncing parenthesis are so 1975. To bad
that all IDEs _even today_ still basically do that (except type popups
and context completion showed up in the early 90's, but when you conthink
about it, it really only is an incremental evolution) and haven't even
really *began* to touch the code/debugging visualization realms that
only exist in programmer's heads.

If you make this, don't copy what is already done, make something
to behold!

-pete



Gee, I'm really happy to see you see the potential and have ideas !
Do you have an opinion regarding havind bare s-exp or sxml
representation of the code ?

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] I need some help to edit a tree

2007-02-28 Thread minh thu

Hi,

I'd like to do something that I thought would be very easy to do with
Scheme but I'm getting lost.

I want to have a global *TREE* symbol to hold nested list. (Each node
is either a string or a list of node, but in this mail I make the description
with only lists) Initially it is (define *tree* '()), the empty tree.
If I push a node, it becomes '(()).

Now the fun part. I want to keep track of the current (or selected)
node. Initially there's no node, after a first push, the current node
is the inner list.

I want to be able to add a node to the left or to the right of the
current node. Also,
I want to be able to swap two nodes, or push a node outside of its parent

Now, I take the fisrt case : adding a node to the left of the current one.
To do this, I need to SET! its parent. But of course I've no pointer
to its parent.
So what I've done is to use a *ACCESS-LIST* which contains a list of
'CAR, 'CDR, ... to have the path from the root to the selected node.

Then I can access the current node with
(define (current-node)
 ((apply compose (map eval *access-list*)) *tree*)

(I use a list of symbol because it's niser when printed than procedures)
Similarly, I've defined a PARENT-NODE procedure (just drop-right the
last element of the acces list).
The problem is I can't SET! (PARENT-NODE).

Do you have an idea about how can I manage this ? I guess there's an
elegant way to write tree editing code but I don't see.

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] Re: I need some help to edit a tree

2007-02-28 Thread minh thu

2007/2/28, minh thu [EMAIL PROTECTED]:

Hi,

I'd like to do something that I thought would be very easy to do with
Scheme but I'm getting lost.

I want to have a global *TREE* symbol to hold nested list. (Each node
is either a string or a list of node, but in this mail I make the
description
with only lists) Initially it is (define *tree* '()), the empty tree.
If I push a node, it becomes '(()).

Now the fun part. I want to keep track of the current (or selected)
node. Initially there's no node, after a first push, the current node
is the inner list.

I want to be able to add a node to the left or to the right of the
current node. Also,
I want to be able to swap two nodes, or push a node outside of its
parent

Now, I take the fisrt case : adding a node to the left of the current one.
To do this, I need to SET! its parent. But of course I've no pointer
to its parent.
So what I've done is to use a *ACCESS-LIST* which contains a list of
'CAR, 'CDR, ... to have the path from the root to the selected node.

Then I can access the current node with
(define (current-node)
  ((apply compose (map eval *access-list*)) *tree*)

(I use a list of symbol because it's niser when printed than procedures)
Similarly, I've defined a PARENT-NODE procedure (just drop-right the
last element of the acces list).
The problem is I can't SET! (PARENT-NODE).

Do you have an idea about how can I manage this ? I guess there's an
elegant way to write tree editing code but I don't see.

Thanks,
thu



Instead of using a SET! at the top, I think I will try a recursive
porcedure on both the tree and the access-list, and then use a SET! a
the place I need.

Anyway, I'm  interested in hearing your ideas.
Thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] opengl egg naming scheme

2007-02-27 Thread minh thu

Hi,

At the beginning of my journey with Chicken, I stolen the opengl egg
and repacked it: I changed its naming gl:UpperCase in glAsInC.

Now I have code I'd like to share that depends on the glAsInC naming.
It would not be very difficult for me to change it but I find it ugly.

Is there any rationale to keep/change the extant egg ? To provide a new one ?

Or is it possible to use the extant egg (the one with gl:Naming) but
use it as if it was named glLikeThis ?

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] opengl egg naming scheme

2007-02-27 Thread minh thu

2007/2/27, Kon Lovett [EMAIL PROTECTED]:

On Feb 27, 2007, at 10:53 AM, minh thu wrote:

 Hi,

 At the beginning of my journey with Chicken, I stolen the opengl egg
 and repacked it: I changed its naming gl:UpperCase in glAsInC.

 Now I have code I'd like to share that depends on the glAsInC naming.
 It would not be very difficult for me to change it but I find it ugly.

 Is there any rationale to keep/change the extant egg ? To provide a
 new one ?

 Or is it possible to use the extant egg (the one with gl:Naming) but
 use it as if it was named glLikeThis ?

(define glAsInC gl:UpperCase)


Ouch, that's a lot of defines :)
Thanks
thu


Felix's naming for the glut  opengl eggs is a little odd in that he
follows the C binding CamlCase style - not the Scheme way, especially
since Scheme, up thru R5RS, is case-insensitive.

(See http://community.schemewiki.org/?variable-naming-convention)

Best Wishes,
Kon


 Thanks,
 thu


 ___
 Chicken-users mailing list
 Chicken-users@nongnu.org
 http://lists.nongnu.org/mailman/listinfo/chicken-users





___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] Release candidate for 2.6 available

2007-02-26 Thread minh thu

2007/2/26, John Cowan [EMAIL PROTECTED]:

felix winkelmann scripsit:
 Hi!

 A release canditate for CHICKEN 2.6 is now available at
 the web-site. If you find the time, please give it a try.

Works fine under Cygwin with CMake.


Is it interesting to mention it works under ubuntu with configure/gnu make ?
Well it works (after recompiling all my eggs... I forgot one and it
coudn't find foreign-parse).

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] Simple GUI features

2007-02-15 Thread minh thu

2007/2/15, Tony Sidaway [EMAIL PROTECTED]:

While it may be rather difficult, and possibly even impracticable, to
produce a general super GUI, it should be possible for all Chicken GUI
eggs to provide GUI features in a uniform way.


It's really a good idea. Maybe can we pick a name and have a way to
track versions of this proposal and suggestions. We can use the same
way eggs are documented on the wiki ?

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] gui api design -- some thought -- long mail

2007-02-13 Thread minh thu


A simple alternative is that often you just want to call yourself
later.  That is, register a timer which when it expires, will call the
given function which you give when you register the timer.  It can be
a one-shot or a repeating timer.


In my conception of the event queue, each event has a timestamp
indicating when it has to be dispatched. So an event can be inserted
in the queue before already present events.



 b) (which is related) Since a function call results
 from an event, you can't generate an event whose
 callback needs the end of
 the event-generating-computation (i.e. it's not
 asynchronous).

 I'd rather like to finish a computation which generates
 an event before processing it.

If you generate the event and put it in the queue, it will be
processed later when the code gets around to checking the queue,
right?


Yes. The code could be a scheduler (provided by the library) or user code.



 c) Also, say you want to code When the left mouse button
 is pressed (elsewhere than above my two main widgets),
 make the first widget be blue and the second one be red..
 (Call this the blue-red exemple for later reuse.)
 You'll need to register a callback on the background widget.
 This callback needs to access (to be aware of) the two
 other widgets. I don't like this.

Whereas in an immediate mode UI, the main do function is both
finding out that the button is pressed, and drawing the blue and red
widgets directly right?


I guess  so.


An alternative way to get this behavior with callbacks would be to
make it possible for every widget to register interest in any kind of
event, whether or not it would seem relevant to that widget.  The
callback can have an extra parameter to indicate the relevance.  So a
normal button registers only for a click event on himself, and your
special button registers for a click event anywhere, and is given a
true when the click is on him, and a false if it's somewhere else,
along with coordinates etc.  Or maybe your special button does two
registrations of two different callbacks so that the parameter is not
necessary...


The first part of your description sticks to my idea. Hwever, when you
say 'the widget registers interest', I would say 'you register a
callback that will only cares of one widget'.
So to implement the button, I would make a handler for
'left-mouse-button-pressed which insert a new event,
'that-button-clicked. This step could be hidden for the user of the
GUI.



 My Idea.

 I call it mine but I don't know .. maybe it's as old
 as the world ?

 - The callback mechanism is exposed and made not mandatory.
 - The widgets are aware of events, not the contrary
 (see c) above).
 - The event facility can be used for application-generated
 events.
 - The ol'callback way is still available.


 How.

 An event-queue keeps the not-yet-processed events.
 (For some application, it might be useful to timestamp
 events so they are dispatched later or even keep the
 already-processed events to be able to reverse time.)

That's probably a really good idea.  I think in general the trend is
that as memory gets cheaper (RAM and disk both, and I believe they
will be the same thing some day when nonvolatile RAM is cheap enough),
you can find reasons to keep data around, timestamp it, take diffs,
even build a sort of version control system for some classes of data,
rather than assume that only the latest, most current data is relevant
and letting new stuff overwrite old stuff.  Especially, any text which
the user enters himself ought to be considered sacred and never
garbage-collected unless the user asks for it to be deleted.  The book
The Humane Interface makes this point.  I was thinking a few years
ago that a computer's disk ought to be structured as a giant log,
where the data the user creates is appended to the log, and then data
structures which the software creates to organize that data never
duplicate it - they just point to it.  The user enters a stream of
data, and the computer makes sense of it over time.  You would have
built-in version control - edits are actually a special kind of diff
that is appended to the log, so you will have the new version and the
old version at the same time.  Like CVS or subversion but implemented
more efficiently.  That is what early versions of the Xanadu project
were about...but there is more than one way to implement it, and I
can't make up my mind which is the best one (and neither could the
Xanadu guys, which is why it never got done).

Anyway I'm not sure that mouse events have the same kind of perennial
lasting importance that text does, but in graphical documents, like
diagrams, a persistent history would be nice, with unlimited undo and
the ability to compare different versions.  I want to build something
like that when I get the GUI stuff done.


Interesting point. Although it was not clear, I was thinking of some
functions to get events but also query the existence of a event. We
could add the possibility to keep 

Re: [Chicken-users] Centralized documentation

2007-02-12 Thread minh thu

2007/2/12, Peter Bex [EMAIL PROTECTED]:

Hi everybody,

I was having an e-mail discussion with Mario Domenech Goulart about Spiffy
and the conversation turned towards egg documentation.
The discussion started because Spiffy's documentation is starting to
grow beyond what fits comfortably on one webpage (which is the case at this
moment).  We both agreed the best place would probably be on the wiki,
perhaps like lighttpd does it (http://www.lighttpd.net)

Here's the relevant part of the discussion:

- Forwarded message from Mario Domenech Goulart [EMAIL PROTECTED]
-
   How would [keeping a synched copy of the documentation from the wiki
   on call/cc.org] work if we use more than one page?
 
  Hmmm. I don't know.  I'd expect we'd have an index page (which would
  be copied to call/cc.org's eggs directory) and the links would point
  to galinha.  But I don't know if it is the right way.

 What's the point of duplicating the index then?  We could just point to
 galinha and be done with it.

That would be the more atraightforward alternative.

 Saves us the trouble of updating the call/cc page every time.  Maybe
 Felix should think about ditching the egg pages altogether and
 simply linking to Galinha as the one and only resource for egg
 documentation.  It would remove a lot of overhead and duplication,
 IMHO.  I never liked having two systems which do the same thing
 (which is one reason why I despise GNU's policy wrt info pages over
 manpages).  It confuses me.  Where do you look for the most recent
 info?  Who sees what system as authoritative?  Do people think to
 update the other version at all?  Do some people switch their
 standpoint sometime later, changing which system I need to look at?

 This is definitely not good for newbies.  They might be scared away in
 confusion.  You might think this is silly, but if I think it, I'm sure
 there are others.

I see your point.  My guess is that Felix wants to keep the official
documentation at call/cc.org.  But it's just a guess.  We have to ask
him.


  Do you think the Spiffy documentation and this documents containing
  tips should be the same?

 It could be a section in the documentation.  Since it's a wiki, the nature
 of documentation is a lot more volatile.  I'm not sure what's best yet.

Ok.  So let's try to solve the case of the canonical Spiffy
documentation in a way we can accomodate further documents in the
future.
- End forwarded message -

What do you think would be the best way to go from here?  I really believe
one canonical place for documentation is a benefit both for experienced
developers as well as for newbies and the documentation maintainers.
Having two or more places where documentation can be found or generated
(wiki syntax, eggdoc format and plain HTML) causes a lot of confusion
and duplication of work.

The current situation conveys chaos and disagreement to outsiders, I think.
If we want to attract more developers to get more work done (we all agree
on that being a good thing), a sane documentation system would go a
long way towards at least giving the appearance of a well-engineered
and structured project.  (Having a ticket tracking system helps similarly
and I wish to thank Felix and Arto for setting it up.  I agree with Felix
that everybody should register a login there)

Should eggdoc be deprecated in favor of svnwiki?  Should the wiki be
deprecated instead?  Should we stick with the status quo? (IMHO, no,
but I can imagine some people might feel the same about this as about
version control systems)

Any other ideas would be welcome.

Regards,
Peter
--
http://sjamaan.ath.cx
--
The process of preparing programs for a digital computer
 is especially attractive, not only because it can be economically
 and scientifically rewarding, but also because it can be an aesthetic
 experience much like composing poetry or music.
-- Donald Knuth


Hi,
I'm really not aware of the situation but here's two things:

Documentation on a wiki is nice to read and for collaboration but if
it's sufficiently good to be added to the main doc (which ships with
the code/library), it could be ennoying to manage. It would be
practical for the maintainers to see some kind of diff between the
wiki edited doc and the main doc, although for the reader there's no
difference. (From another point of view, wiki pages have to belong to
the doc, not to the wiki. If we add a lib or remove it, its doc is
automatically added or removed)

The fact there's multiple sites must not be a concern for the
maintainer. Any sync has to be performed by the sites themselves, thus
needing one kind of doc system.

Hope it makes sense for the above questions...

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] cool 3d logo by Joshua Griffith

2007-02-12 Thread minh thu

2007/2/12, felix winkelmann [EMAIL PROTECTED]:

Hi!

Take a look at this funky logo:

http://www.call-with-current-continuation.org/logos/chicken-3d.png

hehe, not really a logo but... :)


Thanks, Joshua!

(I've added it to our logos page at http://chicken.wiki.br/logos -
unfortunately
svnwiki doesn't like me today, so I don't know whether they appear or not)


I see some logos but not the new one.
thu




cheers,
felix


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users




___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] csc -extend with user-preprocessor-pass

2007-02-10 Thread minh thu

Hi,

I'm trying the -extend file option of csc with the following file:

(user-preprocessor-pass
 (lambda form
   (display (car form))
   (newline)
   '(display ...))

When compiling, the first top level form (of the being compiled file)
is not displayed.
Is it normal ?

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] GUI: thoughts on practicality.

2007-02-08 Thread minh thu

2007/2/8, Tony Sidaway [EMAIL PROTECTED]:

It's been my feeling for some time that it should be possible for a
Scheme programmer to create windows with menus, buttons, and whatnot,
with a reasonable expectation that the details of implementation can
be left to low level drivers.

Furthermore, the Scheme programmer should be able to write simple code
to do simple things.  The code should be simple but the implementation
can be complex.  At the high level I don't care whether the widget I'm
handling is written in C, C++, Java, Common Lisp or Scheme.  I don't
want to have to care whether my code is running on native Windows,
Cygwin, X, Macos or a cellphone GUI. I don't want to have to care
whether the rendering library is Cairo or SDL.  These are
inconsequential fripperies and unwanted dependencies that, if I let
them, will seal my code into a tomb as the years go by.

So it seems to me that the way to produce really good, durable and
reliable Scheme code for GUI programming is to concentrate on a good
high level design.

What I suggest here won't satisfy the requirements of game designers,
or programmers who think the GIMP needs to be rewritten in Scheme, and
it might even fall short of what most people would expect of a modern
GUI.  This is because I think we already have enough Window managers,
skin systems, game toolkits and the like, and nearly all the
successful ones are written in a low level language.  Rather than
duplicate that work, these suggestions are intended to enable a Scheme
programmer to write an event-controlled, graphical user interface so
that he can communicate with the user in a way that the user finds
intuitive. and to do so without tying him to a particular brand of
GUI.

Eventually I will have to wade deeply into all the popular GUI designs
and come up with one that describes the basics of all of them to a
level of detail that would be useful to a high level programmer.  But
for now I'll list some of the things that I think are required in a
useful high level GUI design for Scheme.

* Geometry: the dimensions of each display device must be available to
the high level program.  Both pixels and if physical dimensions.
** If the latter are not available to the driver, it should provide
intelligent estimates and say so.
** The dimensions of GUI objects controlled by the program should be
the size requested by the program, or a reasonable approximation
thereof.
* Color: a reasonable level of color control must be provided.
* Time: the time of each event must be available to the high level
program in a usable form.  srfi-18?
* HIgh level event handlers.  a Scheme closure may be assigned to
handle any event or bundle of events the program is interested in.
* High level containers: there must be a way of expressing a
hierarchical relationship between widgets.  This should be coupled to
the container mechanism of the underlying GUI where possible, but
should not depend on such a mechanism existing.
* Configuration: the application must be reasonably configurable at
run time.  The native configuration tools should *usually* take
precedence, and the high level GUI works within the constraints set by
those tools.  The program *may* be permitted to break this.

Desirables:

* Queues: we need a standard for queues.  whether based on Chicken,
Scheme48, Gauche or whatever.  High level event queues would be based
on that standard.


So in your conception, accessing the event queue must be explicitly
possible ? Usually, you can just provide a callback and wait for the
system call it.

Cheers,
thu


* Time: the external form of this should follow IETF RFC 3339 and any
superseding standard.
* Foreign function interface.  A reasonably abstract foreign function
interface should be provided to enable drivers to be ported from one
Scheme implementation to another.  Adherence to that ffi should not be
mandatory.






___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] GUI: thoughts on practicality.

2007-02-08 Thread minh thu

2007/2/8, Tony Sidaway [EMAIL PROTECTED]:

On 2/8/07, minh thu [EMAIL PROTECTED] wrote:

 So in your conception, accessing the event queue must be explicitly
 possible ? Usually, you can just provide a callback and wait for the
 system call it.

A translating dispatcher might be used for implementation, basically a
bit of glue code that listens to the native queue and translates to a
standard format, and for some higher level features such as
intercomponent communication a queuing system would be a good feature.


I find it funny that it's something closer to CSP (or Erlang).
Since Chicken has lightweight multithreading, we could turn it into a
node (in Erlang terminology). In fact it's something I might be
interested in when I'll dig into Chicken's implementation.
Again sorry for my 'random' (Brandon would call it 'insane' :) ideas...
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] cross-platform gui toolkit

2007-02-08 Thread minh thu

[snip]
 RD is a non-issue for OpenGL windowing.  We're not going to do enough
 to get ourselves into trouble.  I'm sure Thu will cook up some event
 handling experiments, and at some point I'll try my own hand at it.

What kind of experiments?



Hi,

I think Brandon talked about the (long) mail I've send about gui api design.
But it's not intended as a Chicken community project (although I've
nothing against).
It's simply something I was thinking for a while and then Felix's gui
project appeared, so I thought I could share with you what I was
thinking.
And if it comes to be a source of ideas for Felix's project, then good !

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] gui api design -- some thought -- long mail

2007-02-07 Thread minh thu

Hi All.

I'm aware of two kinds of GUI event response mechanisms.
(I'm dropping phooey or cello since I don't know them.
Furthermore, their implementation is probably too different
of what I want to talk here.)

The first one is Immediate Mode GUI and the second one is
the so classic Callbacks, event-driven mechanism.

In this text, I'll try to say why I don't like the second
one (I won't talk about the first one.) and provide an idea
that only appeared clearly to me yesterday (although it's
really simple). This idea avoids what I don't like about
the Callbacks while letting the user still use them.

I first thought I would implement it a bit (on top of the
project with Brandon) before talking about it but I need
to write to not forget. Also, those who are interested in
Felix's GUI project might like it (and give some
feedaback !).

Disclaimer: I'm not an expert, I just have some ideas :)
but I hope to say not to much stupid things.


Immediate Mode GUI.

The idea is to have the drawing and event-responsing of
a widget happens at the same time. It thus needs some decent
framerate. It means no callback : the code handling the
event is written alongside the code displaying the widget
(and the code testing the existence of the event). It
can also means no data structure for the widgets (just
like you can write a rectangle with opengl without having
to store a Rectangle object; the code is the object).

Google for references. See also 'A Zero Memory Widget
Library'. ZMW uses a datastructure when traversing the
code; it's necessary if you want to calculate the size
of a widget which is made of other (unknown) widgets.


Callbacks.

Classical GUI libraries let the programmer write an
application that responds to user actions : the A button
is clicked or the Y window is moused-over. The code
is bound to the event by registering a so called callback
(simply a lambda abstraction on this side of the world,
an ugly in-line class instanciation (and interface
implementation) in the Java world).

So basically, a function is called back when a gui
event arises. The mechanism by which events are detected
and functions called back is hidden (transparent for
the programmer).


What I Don't Like About Callbacks.

a) Putted simply, you can't mix gui events with
application specific events.
b) (which is related) Since a function call results
from an event, you can't generate an event whose
callback needs the end of
the event-generating-computation (i.e. it's not
asynchronous).

I'd rather like to finish a computation which generates
an event before processing it.

c) Also, say you want to code When the left mouse button
is pressed (elsewhere than above my two main widgets),
make the first widget be blue and the second one be red..
(Call this the blue-red exemple for later reuse.)
You'll need to register a callback on the background widget.
This callback needs to access (to be aware of) the two
other widgets. I don't like this.


My Idea.

I call it mine but I don't know .. maybe it's as old
as the world ?

- The callback mechanism is exposed and made not mandatory.
- The widgets are aware of events, not the contrary
(see c) above).
- The event facility can be used for application-generated
events.
- The ol'callback way is still available.


How.

An event-queue keeps the not-yet-processed events.
(For some application, it might be useful to timestamp
events so they are dispatched later or even keep the
already-processed events to be able to reverse time.)
For some event, the current state is kept. Exemple:
You might not want to have code run each time the
enter key is pressed but only want to be able to
query its state; is it pressed ? Or you might want
to be able to respond to the many events that have
appeared before your code is run.

You already see the moment when an event is generated
and the moment when it is processed are no tied.
Also, sampling for events and processing them are
not tied.

The base API let you test the existence of an event.
The test can be blocking or not. It can removes the
event from the queue or not. (The api has to be
extended so an event can be removed automatically
when every interested widget has already received it.)

(This last point let you write the blue-red program:
the two widgets are aware of the events.)

At this point, we have access to events. But how (when)
the code accessing the events is run ? How the gui
event-polling is done ?

Here again we gain some flexibility. You can write
yourself a loop that calls one API function to
pump gui events then calls the event-testing-related
API functions. Or you can use an API function set
to let you register functions to be called regularly
(independently of events) and then launch an API-
provided main loop. Or register functions to
be called only for some specific events.

Yep, we approached the well-known callback mechanism.
To make it really feels like that, we can provide a
function which makes the widget generate an event
*and* 

[Chicken-users] do I use define-foreign-variable correctly ?

2007-02-07 Thread minh thu

#!
#include X.h
#include keysym.h
#

(define-foreign-variable c-escape-key int XK_Escape)
(define escape-key c-escape-key)

Do I need to have those two lines too be able to use escape-key as a
Scheme symbol for the C #defined XK_Escape value ?

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] do I use define-foreign-variable correctly ?

2007-02-07 Thread minh thu

2007/2/7, Kon Lovett [EMAIL PROTECTED]:

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On Feb 7, 2007, at 6:41 AM, minh thu wrote:

 #!
 #include X.h
 #include keysym.h
 #

 (define-foreign-variable c-escape-key int XK_Escape)
 (define escape-key c-escape-key)

 Do I need to have those two lines too be able to use escape-key as a
 Scheme symbol for the C #defined XK_Escape value ?

Umm, depends. Do you want it visible outside of the compilation unit
(i.e. exportable)?


The escape-key, yes; the c-escape-key, no.


then '(define escape-key (foreign-value
XK_Escape int))' is enough.


Thanks !


(I might make the symbol uppercase just
to emphasize it is a constant.)


Ok.


Also 'define-foreign-variable' has
overhead that you don't want for a constant, it isn't mutable so
conversion should only be done once. ('foreign-value' is a wrapper
around 'define-foreign-variable' that creates the variable, gets its'
value,  throws away the variable, returning only the value.)


Do I understand correctly : define-foreign-variable has overhead in this
case since I don't need it to be mutable and foreign-value has not
that overhead ?

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] idiomatic/usual way of file-based configuration in Scheme

2007-02-06 Thread minh thu

Hi folks,

I was wondering if there was something like Java's properties files
that is commonly used in Scheme. (The reference to Java is because I
learned it, not because I like it :)

It would just amount to read a list of key/value pairs in Scheme
syntax. Or maybe a triple if the type is given.

What do you use ?

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] idiomatic/usual way of file-based configuration in Scheme

2007-02-06 Thread minh thu

2007/2/6, Kon Lovett [EMAIL PROTECTED]:

On Feb 6, 2007, at 2:49 AM, Mario Domenech Goulart wrote:

 Hello Thu,

 On Tue, 6 Feb 2007 10:52:36 +0100 minh thu [EMAIL PROTECTED] wrote:

 I was wondering if there was something like Java's properties files
 that is commonly used in Scheme. (The reference to Java is because I
 learned it, not because I like it :)

 It would just amount to read a list of key/value pairs in Scheme
 syntax. Or maybe a triple if the type is given.

 What do you use ?

 A simple approach would be dumping the representation of scheme
 objects (e.g., lists) to a file:

   csi (define my-list '((1 2 3) (4 5 6) (a b c)))
   csi (with-output-to-file my-file (lambda () (pp my-list)))
   csi (with-input-from-file my-file read)
   ((1 2 3) (4 5 6) (a b c))

 There is also the s11n egg:
 http://www.call-with-current-continuation.org/eggs/s11n.html

 PS: I don't know what Java's properties files are, I considered the
 second paragraph from your message.

 Best wishes,
 Mario

Take a look at the SRFI-29 egg.


Although I was not asking about for l10n issue, it might become handy.
Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] cross-platform gui toolkit

2007-02-05 Thread minh thu

Hi all,


[snip]
If I had a simple, GUI toolkit running on Linux, OS X and Windows, binds
native widgets, has a simple basic graphics API (OpenGL would be ideal),
is smaller than 1-2 MB,
provides text-editing (multiline), buttons, images, frames, checkboxes,
and a couple more widgets, simple menus, then I'd be happy.


About the API. You'd like to go opengl-style, right (stateful or
stateless ?) ? What about a xhtml/css/javascript style ? I mean, of
course, everything in Scheme but with content/presentation/logic
separated... Otherwise, it would be the classical event-based (with
callbacks) mechanism ? I wonder what other means could be used.

Maybe some kind of message passing instead of function calling ? (any
idea of gui toolkit for erlang ?) Or some kind of spreadcheet-like (I
think to phooey in haskell or cello in common lisp).

Sorry, I understand the goal is to be practical and cheap for the time
and effort of the community :)

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] other leading Schemes

2007-02-03 Thread minh thu

2007/2/2, Brandon J. Van Every [EMAIL PROTECTED]:

minh thu wrote:
 Hi Brandon,

 although you first start your mail with a question, what's the
 underlying intention ?
 I can't understand why there's so much discussion about 'community
 size' and 'growing' and  so on... it's the same on every mailing list
 I've read.

 Don't take my question offensively; it's really not the goal...


The underlying intention is for programming not to suck.



That and to
actually make money.  Programming pretty much sucks when it creates lots
of busywork for you + doesn't pay the bills.  You get caught in a cycle
of working on unprofitable trivia, suddenly wondering how you'll keep
the roof over your head, and realizing the gruntwork has kept you from
accomplishing any significant goal anyways.  When this goes on for a
long time, you come to realize that the language you're using is not
better than any other crap out there, no matter how sophisticated or
advantageous it's supposed to be.  It's actually a big waste of time.
You just waste your time in different ways than a mainstream language.


You're saying programming sucks when 1/ you want it to make money but
got stuck in silly details, 2/ and also the language used is of minor
importance.

1/ There's different way to make money with programming but to get
stuck in silly details, I would think you're talking of some kind of
personal project. Right ?

Because I would think also that for ordered tasks, it's perfectly
acceptable to use any language to get the job done.

2/ Language used is of minor importance : why ? Because java is bulky
but has a lot of libraries, and because Scheme is slick but with not
enough tools ?

Or because even if Scheme is nicer than java you have gruntworks that
you woudn't have with java ? In fact, I thought a nicer language would
make the work (even groundwork) more pleasant and faster do.


At least with the mainstream languages, there's money in them, you can
get paid for them.  If you accidentally become well versed in the trivia
of C++, Java, or C#, you can make big $$ at that.


Do you mean being employed ? Or at least working for out sourced
project, not in-house project (i.e. the language used is of importance
for the one who ordered the project) ?


With a marginal language like Scheme, nobody cares.  You go hungry.


Same question.


I'm not ready to give up on Chicken yet, or open source in general.  I
think there must be a profitable business model in it somewhere.  But
I'm quite aware of all the support and RD jobs that must get done, to
make a language that really is pleasant to use.  So I see community
organization as key.


You mean the language is not useable as-is...



Academics and students don't feel these issues.  They've got financial
support for their work.  So they can work on languages like Scheme that
don't make most people any money.


... but is ok for non-making-money work. right ?



Some people actually use Scheme as part of their commercial business
model.  But they are few and far between.  Their economic results are
not easily reproduced by most people.  Whereas anyone can learn C++,
Java, and C# and then go make money.


I have difficulties to explain my misunderstanding of what you're
saying. I have the feeling you're mixing different issues : languages
(mainstream and others) and business models.

I think you're saying at least, with java, you can be still ok making
money but forget that it would imply a totally different way of
making so than when you're saying even with Scheme, groudwork gets
you stucked.

Hoping it makes sense,
cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : Re : [Chicken-users] thread-sleep! for less than a second

2007-01-16 Thread minh thu

2007/1/15, felix winkelmann [EMAIL PROTECTED]:

On 1/13/07, Daishi Kato [EMAIL PROTECTED] wrote:
 Hi,

 That was something that I could not notice either at first.
 Another issue for me is that I want to declare fixnum
 when all other procedures are fixnum arithmetic.
 So, I wished thread-sleep-millis!
 Any workaround for this? Maybe making a tiny egg for this?


I have added it (called `thread-sleep!/ms') to srfi-18. Here is the patch:

diff -rN -u old-chicken/srfi-18.scm new-chicken/srfi-18.scm
--- old-chicken/srfi-18.scm 2007-01-15 20:18:45.0 +0100
+++ new-chicken/srfi-18.scm 2007-01-15 20:18:45.0 +0100
@@ -281,16 +281,25 @@
 (##sys#setslot thread 3 'ready)
 (##sys#add-to-ready-queue thread) ) )

-(define thread-sleep!
-  (lambda (tm)
-(unless tm (##sys#signal-hook #:type-error 'thread-sleep!
invalid timeout argument tm))
+(define thread-sleep!)
+(define thread-sleep!/ms)
+
+(let ()
+  (define (sleep limit loc)
 (##sys#call-with-current-continuation
  (lambda (return)
-   (let ([limit (##sys#compute-time-limit tm)]
-[ct ##sys#current-thread] )
+   (let ((ct ##sys#current-thread))
 (##sys#setslot ct 1 (lambda () (return (##core#undefined
 (##sys#thread-block-for-timeout! ct limit)
-(##sys#schedule) ) ) ) ) )
+(##sys#schedule) ) ) ) )
+  (set! thread-sleep!
+(lambda (tm)
+  (unless tm (##sys#signal-hook #:type-error 'thread-sleep!
invalid timeout argument tm))
+  (sleep (##sys#compute-time-limit tm)) ) )
+  (set! thread-sleep!/ms
+(lambda (ms)
+  (##sys#check-exact ms 'thread-sleep!/ms)
+  (sleep (fx+ (##sys#fudge 16) ms)) ) ) )


cheers,
felix



Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] bash completion for chicken-setup

2007-01-13 Thread minh thu

Hi,

I've added an item to [http://galinha.ucpel.tche.br:8080//tips and
tricks] (the last one) entitled 'bash completion for chicken tools'.

There's only support for chicken-setup now.

Comments, suggestions, etc, ... welcome!
Hope some of you like it ;)

Cheers,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: Re : [Chicken-users] various questions

2007-01-12 Thread minh thu

2007/1/12, felix winkelmann [EMAIL PROTECTED]:

On 1/11/07, minh thu [EMAIL PROTECTED] wrote:
 
  Could you elaborate on this? Do you want to let the user specify the
  actual record type, or it's contents?
 The record type.
 Say mailbox use a list-based queue implementation (so 'mailbox' in the
 following sentences is a hypothetical one).
 Could I provide another implementation of a queue to be used by mailbox?
 Or could the author of mailbox make it possible by providing different
 implementations ?
 I don't know module systems but maybe my question is wheter we can
 parametrize a module when loading (instanciating ?) it.


Well, this is what is called functors in SML, for example: parameterized
modules. You provide a module implementing the operations on
a specific datatype and pass this module to your mailbox module.
A (very basic) implementation of such functors is in the lexmod egg:

http://chicken.wiki.br/lexmod


cheers,
felix



Thank you. For the thread/print issue, I will retry and maybe post the
offending code (after cleaning it of irrevlevent things).
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] writing from a thread issue

2007-01-12 Thread minh thu

Hi,

I made a script of my session to exhibit the problem:
No output is given by the thread but the blank lines.

Thanks for any help,
thu

Follows the output of my session (in a console in linux).

$ cat weird.scm
;;; weird.scm
;;
;; 12.01.2007
;;
;; Exhibits non-writing from a thread.
;;

(declare (uses srfi-18))

(define (poll-for-event)
 (define (poll) ((write in poll-for-event) ; not shown
  (newline)  ; shown
  (flush-output) ; changes nothing
  (thread-sleep! 1)
  (poll)))
 (poll))

(define (go)
 (thread-start! poll-for-event))
$ csc -s weird.scm
$ csi -require-extension weird
)   ___
(__/_) /)   ,/)
 /   (/  _ (/_   _ __
// )__(_(__/(___(/_/ (_
(__)
Version 2, Build 3 - linux-unix-gnu-x86 - [ dload ptables ]
(c)2000-2005 Felix L. Winkelmann
; loading ./weird.so ...
#;1 (go)
#thread: thread0
#;2






$ # I've done a ctrl-c. Notice the blank lines after #;2


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] writing from a thread issue

2007-01-12 Thread minh thu

2007/1/12, felix winkelmann [EMAIL PROTECTED]:

On 1/12/07, minh thu [EMAIL PROTECTED] wrote:

 (define (poll-for-event)
   (define (poll) ((write in poll-for-event) ; not shown

That line above has a ( to much. The arguments become
evaluated, but before the write is executed, the call to poll
is. The write is in operator position and might be executed
after the (poll).

Just remove the parens around the forms in poll.


cheers,
felix


Oh thanks, I've looked at something like this but didn't find (so stupid).
And sorry too,

thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : Re : [Chicken-users] various questions

2007-01-12 Thread minh thu

2007/1/12, Kon Lovett [EMAIL PROTECTED]:

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On Jan 12, 2007, at 12:31 AM, felix winkelmann wrote:

 On 1/11/07, minh thu [EMAIL PROTECTED] wrote:
 
  Could you elaborate on this? Do you want to let the user specify
 the
  actual record type, or it's contents?
 The record type.
 Say mailbox use a list-based queue implementation (so 'mailbox' in
 the
 following sentences is a hypothetical one).
 Could I provide another implementation of a queue to be used by
 mailbox?
 Or could the author of mailbox make it possible by providing
 different
 implementations ?
 I don't know module systems but maybe my question is wheter we can
 parametrize a module when loading (instanciating ?) it.


 Well, this is what is called functors in SML, for example:
 parameterized
 modules. You provide a module implementing the operations on
 a specific datatype and pass this module to your mailbox module.
 A (very basic) implementation of such functors is in the lexmod egg:

 http://chicken.wiki.br/lexmod

The 'levenshtein' egg has a generic algorithm, it works w/ strings or
vectors. It uses the facilities of 'procedure-surface' to provide the
appropriate procedures.



Thanks for pointing this. I'll try for the moment to stick to somewhat
standard Sheme because I'm fairly noob and don't want to learn another
library (in addition of Scheme and chicken specifics). Probably later
though.

thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] thread-sleep! for less than a second

2007-01-12 Thread minh thu

Hi,

Question again, my apologies ;)

Is it possible to have a thread sleep some milliseconds ?

I want to have a thread poll xlib for some events but not in tight
loop neither only every second (thus something in between). I guess
also than thread-yield! gives cpu to other threads but still makes a
tight loop in case the other threads want to sleep!

I can't use c sleeping function, otherwise the whole chicken runtime
will go to bed.

Is there any workaround ? Maybe I can add the feature to chicken itself ?

Thanks,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] thread-sleep! for less than a second

2007-01-12 Thread minh thu

2007/1/12, Kon Lovett [EMAIL PROTECTED]:

On Jan 12, 2007, at 1:36 PM, minh thu wrote:

 Hi,

 Question again, my apologies ;)

 Is it possible to have a thread sleep some milliseconds ?

thread-sleep! (the seconds do not need to be a whole number)

Tks, I didn't see it in the chicken doc or srfi-18.
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] various questions

2007-01-11 Thread minh thu

 Is there support for choosing a version of an extension, for example
 if the new version deprecates something my application uses ?

 No, this is currently not possible.

Something like this is possible, if you name the extensions carefully.
I have done something like that. I used require to load the extension.

If you have two extension, ext1.so and ext2.so, both with an exported
function ext-test, then you can load the required extension like this:

(require (string-append ext (car (command-line-arguments
(ext-test)

I'm not sure whether calling require is the right thing to do. But it
worked for me.

Groetjes,
Peter.



It means that it's possible if a common scheme (not the dialect;-) is
used by everybody...
I thought to something like this when posting my question :
http://www.haskell.org/haskellwiki/Library_versioning_policy
(You can also follow the links at the bottom of the page).

To be clear, I'm not requesting anything; I just asked if something
was feasible.
But I let you know the idea :)

Thank you,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] various questions

2007-01-10 Thread minh thu

2007/1/11, felix winkelmann [EMAIL PROTECTED]:

On 1/10/07, minh thu [EMAIL PROTECTED] wrote:
 Hi,

 I've used PRINT, DISPLAY, WRITE, and NEWLINE in a thread created from
 csi (the actual
 thread-making function is in a .so). The thread is just a loop waiting
 one second before the next
 iteration. Strangely, I tried many times, and some times I have no
 output but got NEWLINE. Another time I had output. I used FLUSH-OUTPUT
 but it changed nothing.

Do you run csi in a console window or in emacs? Is this on a UNIX system?


Oh sorry, it is in a console in linux.
I see the (previous) text scrolling because the NEWLINE seems to work
but each line is blank.



 Is it possible to require-extension on different extensions but each
 of them having the same exported functions, for example by putting
 explicitly the extension in a namespace when requiring it ?

No, you would have to use a module system (like provided by
syntax-case, for example).

I will look at it.



 Is there support for choosing a version of an extension, for example
 if the new version deprecates something my application uses ?

No, this is currently not possible.

Ok.



 Something like mailbox wraps an adt. Is it possible to write it so the
 user of the extension can choose another adt to be wrapped (without
 compiling) ?

Could you elaborate on this? Do you want to let the user specify the
actual record type, or it's contents?

The record type.
Say mailbox use a list-based queue implementation (so 'mailbox' in the
following sentences is a hypothetical one).
Could I provide another implementation of a queue to be used by mailbox?
Or could the author of mailbox make it possible by providing different
implementations ?
I don't know module systems but maybe my question is wheter we can
parametrize a module when loading (instanciating ?) it.

Thank you,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Subversion support misguided IMHO

2007-01-08 Thread minh thu

snip

I think Peter is asking for faster one-way Darcs -- Subversion
mirroring, so that platforms without Darcs can get a more accurate
read-only dump of the source pool.  Perhaps Tailor can help with that.
I don't know what the current mechanism is; it sounds like it is not
automated.  Peter could dig into that if he wants, whatever the best
solution is.  I'm sure we could set him up with the needed permissions
and administrative contacts.


For read-only code, I think darcs can produce easily tarballs.
What's the advantage of having the code via svn and not via a tarball
(since even an svn diff would be useless) ?

Cheers,
mt


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] hacking the mailbox egg

2007-01-07 Thread minh thu

Hi,

I'd like to write a small library along the lines of the mailbox egg.
The goal is to have a queue where the elements are ordered by some
kind of value attached to them (in my case, it will be the moment when
the element has to be extracted from the queue).

Reading the code, and being fairly new to scheme and chicken, I have
some questions:

- why is there a queue.scm file ? Is it because usage of the extras
unit can be disabled ?
- what are those ##sys#xxx and ##core#xxx functions ?
 is it permitted (good style) to use them ? where are they documented ?

When/if I complete the writing of such a library, would it be good to
add it to Eggs Unlimited ?
Have you an idea for its name ? ordered-mailbox ?

Thanks a lot
vo minh thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : [Chicken-users] hacking the mailbox egg

2007-01-07 Thread minh thu


On Jan 7, 2007, at 10:14 AM, minh thu wrote:

 Hi,

 I'd like to write a small library along the lines of the mailbox egg.
 The goal is to have a queue where the elements are ordered by some
 kind of value attached to them (in my case, it will be the moment when
 the element has to be extracted from the queue).

So essentially a priority queue.

Exactly, just forgot the name...




 Reading the code, and being fairly new to scheme and chicken, I have
 some questions:

 - why is there a queue.scm file ? Is it because usage of the extras
 unit can be disabled ?

No. Because the extras unit doesn't disable interrupts. Mailbox
doesn't synchronize access to its globals explicitly but disables
interrupts, so the entire file is a critical-section.

Does that mean that when a file disables interrupts, when calling code
from another unit, it could be interrupted ?

So using a (disable-interrupts) declaration is a bit like making all
methods of a java class synchronised ?



 - what are those ##sys#xxx and ##core#xxx functions ?
  is it permitted (good style) to use them ? where are they
 documented ?

Permitted, yes.

Good style? Well, I wouldn't use them unless necessary, or unless
hacking in someone else's code that does use them. You may notice
that 'queue.scm' defines wrappers around the '##sys' access routines
so the main body of the code calls very few directly. And some
operations are just not available outside of the sys namespace, in
which case they must be used.

Documented, no.

Thanks, but, what are they ? What can I use instead of ##sys#slot ? In
the present case, is it ok to use them ?




 When/if I complete the writing of such a library, would it be good to
 add it to Eggs Unlimited ?
 Have you an idea for its name ? ordered-mailbox ?

Sure.


Ok, thanks !
mt


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] Using c code from interpreted code

2007-01-07 Thread minh thu

Hi,

I'm new to chicken and would like to ask a few things.

I'd like to use opengl in chicken, via glx.
I haven't seen the glx extension in the xlib bindings. So I think to
write a few c code
to make an opengl context. That code would have just a few functions
to export for chicken (maybe just one or two).

So I tried to use foreign-code as a starter and the interpreter complained.
I understand that foreign-* are available only for compiled code. Right ?

But I've seen the 'inline' eeg. Is the code written with 'inline'
compiled in the same way when using csc ?

In fact the desired behaviour would be :
- using a 'dollar' syntax
- working in csi
- working in csc in the usual way.

Is it possible ?

How is the usual way to write mixed scheme/c program ?
I think of writing a .so with a corresponding .h then let chicken do
the rest with the foreign-* functions. Is-it right ?

(I coud'nt find a description for that in the documentation on the wiki)

-

Something a bit different.
I tried the example code on the xlib egg page in csi within emacs with quack.
The description said the window should close after the first or second event.
The observed behavior is: the window remains visible and the csi
prompt is back/availble.
Is the code run in a separate thread ? I don't see why it would be so.

Thanks a lot,
VO Minh Thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re : Re : Re : [Chicken-users] hacking the mailbox egg

2007-01-07 Thread minh thu

2007/1/7, Kon Lovett [EMAIL PROTECTED]:

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1


snip
 As you said, the first lines of queue.scm define some %car,... to
 1/ be inlined
 2/ use ##sys#slot
 Is it mandatory to do this to be included in the disabling-
 interrupts file ?
 Both of 1/ and 2/ ?

No. Is it not mandatory to ever use a sys namespace routine (there
are a few exceptions)  one should try not to use such routines. Do
not be confused by the use of ##sys#slot, etc. by mailbox. As I said
earlier it is the style of the original author  historical to boot.

Ok, I didn't fully understand.



 If the above is true, what are the real primitives of chicken (that
 can thus be used without 'getting out' of the file) ?

I do not understand ... without 'getting out' of the file.

Well, I meant without running code that re-enables interrupts. And
I guessed the re-enabling is done when executing code from
somewhere else. But I don't see what is the somewhere else.
I.e. I don't see what triggers the re-enabling.



Stay away from the true primitives of Chicken. These are inlined C
code. Chicken is primarily a compiler. You can see these things by
looking in the .scm source for Chicken units, like library.scm.

Whenever possible do not stray from R5RS or a SRFI. Your situation is
a little special since you are hacking an existing egg that does
stray (mostly for no good reason except history). You can freely
intermix '(##sys#slot p 1)'  '(cdr p)', they are the same thing. The
compiler will even recognize 'cdr'  inline it.

Again, the use of ##sys# stuff in mailbox is historical  not an
example for preferred style. Except for '##sys#thread-unblock!' 
'##sys#delq' which are unavailable in the global namespace.
'##sys#current-thread', '##sys#structure?',  '##sys#make-structure'
are available in other forms,  ##sys#check-structure can be done
differently.

Ok. I will post my code to get feedback and try to not use the sys and core
namespace.




 Thanks, and sorry for those lengthy questions,
 mt

No problem. Thanks for making look inside the mailbox code. I spotted
a bug. (Fixed.)

Great :)

Cheers,
mt


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users