Re: [racket-users] Any work on demo.racket-lang.org?

2017-04-24 Thread Matthew Butterick
> "Make a web page (demo.racket-lang ?) that contains Racket snippets.
> 
> I'm looking to:
> 
> b. make up some kind of curated wiki to host that code (and examples
>   from other sources)
> c. make Racket look as capable of everything as we all know it is


Instead of a wiki, perhaps consider collecting demo code samples into a new 
Racket package & adding explanations via Scribble docs. In turn, these will be 
automatically published at docs.racket-lang.org. 

For instance:

http://docs.racket-lang.org/aoc-racket/ 


Bonus points for using `scribble/lp`.


-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Setting parameters between files does not work as expected

2017-04-24 Thread Philip McGrath
Another thing that might be relevant:
>
> In contrast, direct assignment to a parameter (by calling the parameter
> procedure with a value) changes the value in a thread cell, and therefore
> changes the setting only for the current thread.
> http://docs.racket-lang.org/reference/parameters.html


Also, do you want multiple underlying connections of the same virtual
connection to potentially use different values for the
user/database/password/port?

If not, the most recent way I've dealt with this sort of thing is to come
up with some type of "database connection spec" — for a quick example, I'll
use a hash table — and then do some things with parameter guards, opaque
structures, and a tiny macro to keep the details away from higher-level
code.

I think code might be clearer than a description, so here's a minimal
sketch:

#lang racket

(require db
 )

(struct database-handle (promise))

(define database-spec/c
  (or/c database-handle?
(hash/dc [k (or/c 'user 'database 'password 'port)]
 [v (k)
(case k
  [(user database password)
   string?]
  [(port)
   natural-number/c]
  [else none/c])])))

(define default-database-spec
  #hasheq([user . "postgres"]
  [database . "test-db"]
  [password . "mellon"]
  [port . 5433]))


(define/contract current-database-handle
  (parameter/c database-spec/c database-handle?)
  (let ([initialize
 (λ (spec)
   (if (database-handle? spec)
   spec
   (let ([u (hash-ref spec 'user)]
 [d (hash-ref spec 'database)]
 [p (hash-ref spec 'password)]
 [prt (hash-ref spec 'port)])
 (database-handle
  (delay (virtual-connection
  (connection-pool
   (λ ()
 (postgresql-connect
  #:user u
  #:database d
  #:password p
  #:port prt
  )])
(make-parameter (initialize default-database-spec)
initialize)))

(define-syntax db
  (syntax-id-rules ()
[_ (force (database-handle-promise (current-database)))]))

(provide database-handle? ;keep constructor & accessor private
 database-spec/c
 current-database-handle
 db
 )



On Mon, Apr 24, 2017 at 7:19 PM, David Storrs 
wrote:

>
>
> On Mon, Apr 24, 2017 at 4:43 PM, Scott Moore  wrote:
>
>> Parameters are thread local, and from reading the docs of
>> virtual-connection and connection-pool, I think they create new threads to
>> handle the connections. These threads are probably created before you
>> parameterize, and thus see the original values.
>>
>> Try replacing the virtual-connection stuff with a single call to
>> do-connect, and see if that works. (Obviously not the real fix, but may
>> help identify the error).
>>
>>
> This was exactly it.  Thanks, Scott.
>
> Now I just need to figure out how to work around it.
>
>
>> On Apr 24, 2017, 4:35 PM -0400, David Storrs ,
>> wrote:
>>
>> I'm finding parameters confusing and was hoping someone could explain
>> them for me.  The following is a simplified version of our production code;
>> I'm expecting it to fail but it does not.  What am I not understanding?
>>
>> The sequence goes:
>>
>> *) db.conf creates and provides some parameters (db username, db
>> password, db name, db port) and a function for creating database
>> connections using those parameters
>>
>> *) dbstuff.rkt requires db.conf, re-provides the parameters from db.conf,
>> and also provides a wrapper around the db connector from db.conf
>>
>> *) bar.rkt parses the command line, uses that command line data to set
>> the parameters that were imported from db.conf by way of dbstuff.rkt and
>> makes a DB call
>>
>> *) I run bar.rkt from the command line with an invalid username for the
>> database, expecting it to fail to connect, but it works fine???
>>
>>
>>
>> My first guess was that since I was using the parameters as default
>> values perhaps they were being evaluated at compile time instead of
>> runtime.  I tried changing the default value to #f and then doing (or u
>> (db-user)) in the body of the function, but that had no effect.
>>
>> I am utterly baffled at this point.  Any help would be much appreciated.
>>
>>
>>
>> # file: "db.conf"
>> #lang racket
>>
>> (require db)
>>
>> (define db-user (make-parameter "postgres"))
>> (define db-name (make-parameter "test-db"))
>> (define db-password (make-parameter "mellon"))
>> (define db-port-num (make-parameter 5433))
>>
>> (define (do-connect #:u [u (db-user)]
>> #:d [d (db-name)]

Re: [racket-users] Setting parameters between files does not work as expected

2017-04-24 Thread David Storrs
On Mon, Apr 24, 2017 at 4:43 PM, Scott Moore  wrote:

> Parameters are thread local, and from reading the docs of
> virtual-connection and connection-pool, I think they create new threads to
> handle the connections. These threads are probably created before you
> parameterize, and thus see the original values.
>
> Try replacing the virtual-connection stuff with a single call to
> do-connect, and see if that works. (Obviously not the real fix, but may
> help identify the error).
>
>
This was exactly it.  Thanks, Scott.

Now I just need to figure out how to work around it.


> On Apr 24, 2017, 4:35 PM -0400, David Storrs ,
> wrote:
>
> I'm finding parameters confusing and was hoping someone could explain them
> for me.  The following is a simplified version of our production code; I'm
> expecting it to fail but it does not.  What am I not understanding?
>
> The sequence goes:
>
> *) db.conf creates and provides some parameters (db username, db password,
> db name, db port) and a function for creating database connections using
> those parameters
>
> *) dbstuff.rkt requires db.conf, re-provides the parameters from db.conf,
> and also provides a wrapper around the db connector from db.conf
>
> *) bar.rkt parses the command line, uses that command line data to set the
> parameters that were imported from db.conf by way of dbstuff.rkt and makes
> a DB call
>
> *) I run bar.rkt from the command line with an invalid username for the
> database, expecting it to fail to connect, but it works fine???
>
>
>
> My first guess was that since I was using the parameters as default values
> perhaps they were being evaluated at compile time instead of runtime.  I
> tried changing the default value to #f and then doing (or u (db-user)) in
> the body of the function, but that had no effect.
>
> I am utterly baffled at this point.  Any help would be much appreciated.
>
>
>
> # file: "db.conf"
> #lang racket
>
> (require db)
>
> (define db-user (make-parameter "postgres"))
> (define db-name (make-parameter "test-db"))
> (define db-password (make-parameter "mellon"))
> (define db-port-num (make-parameter 5433))
>
> (define (do-connect #:u [u (db-user)]
> #:d [d (db-name)]
> #:p [p (db-password)]
> #:prt [prt (db-port-num)])
>   (println (~a "In db.conf db-user: " (db-user)))
>   (println (~a "db-name: " (db-name)))
>   (println (~a "db-password: " (db-password)))
>   (println (~a "db-port: " (db-port-num)))
>
>   (postgresql-connect #:user u
>   #:database d
>   #:password p
>   #:port prt
>   ))
>
> (define dbh (virtual-connection
>  (connection-pool
>   do-connect)))
>
> (define (make-connect)
>   dbh)
>
> (provide (all-defined-out))
>
>
> # file: "dbstuff.rkt"
> #lang racket
>
> (require db)
> (require "db.conf")
>
> (define/contract (dbh)
>   (-> connection?)
>   (make-connect))
>
> (provide (all-defined-out)
>  (all-from-out db)
>  (all-from-out "db.conf"))
>
>
> # file: "bar.rkt"
> #lang racket
>
> (require "dbstuff.rkt")
>
> (command-line
>  #:program "db demo"
>  #:once-each
>  [("--db-user") dbu "Username for database handles"
>   (db-user dbu)]
>  )
>
> (println (~a "In bar: db user: " (db-user)))
> (query-value (dbh) "select 'this should not have worked'")
>
>
> # command line:
>
> $ racket bar.rkt --db-user invalid_user
> "In bar: db user: invalid_user"
> "In db.conf db-user: postgres"
> "db-name: test-db"
> "db-password: mellon"
> "db-port: 5433"
> "this should not have worked"
>
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to racket-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout
> 
> .
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Re: Setting parameters between files does not work as expected

2017-04-24 Thread Jack Firth
Whoops! That's what I get for assuming Racket makes the same mistake that
Python does :)

On Mon, Apr 24, 2017 at 1:58 PM, Sam Tobin-Hochstadt 
wrote:

> On Mon, Apr 24, 2017 at 4:43 PM, Jack Firth  wrote:
> > Default values for function arguments are computed once when the
> function is defined, not each time the function is called. You'll want to
> make the defaults all false and get the parameter values inside the
> function body.
>
> This is not accurate about default arguments -- they are evaluated
> every time. See this example: http://pasterack.org/pastes/65766
>
> Sam
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Re: Setting parameters between files does not work as expected

2017-04-24 Thread Sam Tobin-Hochstadt
On Mon, Apr 24, 2017 at 4:43 PM, Jack Firth  wrote:
> Default values for function arguments are computed once when the function is 
> defined, not each time the function is called. You'll want to make the 
> defaults all false and get the parameter values inside the function body.

This is not accurate about default arguments -- they are evaluated
every time. See this example: http://pasterack.org/pastes/65766

Sam

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Setting parameters between files does not work as expected

2017-04-24 Thread Scott Moore
Parameters are thread local, and from reading the docs of virtual-connection 
and connection-pool, I think they create new threads to handle the connections. 
These threads are probably created before you parameterize, and thus see the 
original values.

Try replacing the virtual-connection stuff with a single call to do-connect, 
and see if that works. (Obviously not the real fix, but may help identify the 
error).

On Apr 24, 2017, 4:35 PM -0400, David Storrs , wrote:
> I'm finding parameters confusing and was hoping someone could explain them 
> for me.  The following is a simplified version of our production code; I'm 
> expecting it to fail but it does not.  What am I not understanding?
>
> The sequence goes:
>
> *) db.conf creates and provides some parameters (db username, db password, db 
> name, db port) and a function for creating database connections using those 
> parameters
>
> *) dbstuff.rkt requires db.conf, re-provides the parameters from db.conf, and 
> also provides a wrapper around the db connector from db.conf
>
> *) bar.rkt parses the command line, uses that command line data to set the 
> parameters that were imported from db.conf by way of dbstuff.rkt and makes a 
> DB call
>
> *) I run bar.rkt from the command line with an invalid username for the 
> database, expecting it to fail to connect, but it works fine???
>
>
>
> My first guess was that since I was using the parameters as default values 
> perhaps they were being evaluated at compile time instead of runtime.  I 
> tried changing the default value to #f and then doing (or u (db-user)) in the 
> body of the function, but that had no effect.
>
> I am utterly baffled at this point.  Any help would be much appreciated.
>
>
>
> # file: "db.conf"
> #lang racket
>
> (require db)
>
> (define db-user (make-parameter "postgres"))
> (define db-name (make-parameter "test-db"))
> (define db-password (make-parameter "mellon"))
> (define db-port-num (make-parameter 5433))
>
> (define (do-connect #:u [u (db-user)]
>     #:d [d (db-name)]
>     #:p [p (db-password)]
>     #:prt [prt (db-port-num)])
>   (println (~a "In db.conf db-user: " (db-user)))
>   (println (~a "db-name: " (db-name)))
>   (println (~a "db-password: " (db-password)))
>   (println (~a "db-port: " (db-port-num)))
>
>   (postgresql-connect #:user u
>   #:database d
>   #:password p
>   #:port prt
>   ))
>
> (define dbh (virtual-connection
>  (connection-pool
>   do-connect)))
>
> (define (make-connect)
>   dbh)
>
> (provide (all-defined-out))
>
>
> # file: "dbstuff.rkt"
> #lang racket
>
> (require db)
> (require "db.conf")
>
> (define/contract (dbh)
>   (-> connection?)
>   (make-connect))
>
> (provide (all-defined-out)
>  (all-from-out db)
>  (all-from-out "db.conf"))
>
>
> # file: "bar.rkt"
> #lang racket
>
> (require "dbstuff.rkt")
>
> (command-line
>  #:program "db demo"
>  #:once-each
>  [("--db-user") dbu "Username for database handles"
>   (db-user dbu)]
>  )
>
> (println (~a "In bar: db user: " (db-user)))
> (query-value (dbh) "select 'this should not have worked'")
>
>
> # command line:
>
> $ racket bar.rkt --db-user invalid_user
> "In bar: db user: invalid_user"
> "In db.conf db-user: postgres"
> "db-name: test-db"
> "db-password: mellon"
> "db-port: 5433"
> "this should not have worked"
>
>
>
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to racket-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Re: Setting parameters between files does not work as expected

2017-04-24 Thread Jack Firth
Default values for function arguments are computed once when the function is 
defined, not each time the function is called. You'll want to make the defaults 
all false and get the parameter values inside the function body.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Setting parameters between files does not work as expected

2017-04-24 Thread David Storrs
I'm finding parameters confusing and was hoping someone could explain them
for me.  The following is a simplified version of our production code; I'm
expecting it to fail but it does not.  What am I not understanding?

The sequence goes:

*) db.conf creates and provides some parameters (db username, db password,
db name, db port) and a function for creating database connections using
those parameters

*) dbstuff.rkt requires db.conf, re-provides the parameters from db.conf,
and also provides a wrapper around the db connector from db.conf

*) bar.rkt parses the command line, uses that command line data to set the
parameters that were imported from db.conf by way of dbstuff.rkt and makes
a DB call

*) I run bar.rkt from the command line with an invalid username for the
database, expecting it to fail to connect, but it works fine???



My first guess was that since I was using the parameters as default values
perhaps they were being evaluated at compile time instead of runtime.  I
tried changing the default value to #f and then doing (or u (db-user)) in
the body of the function, but that had no effect.

I am utterly baffled at this point.  Any help would be much appreciated.



# file: "db.conf"
#lang racket

(require db)

(define db-user (make-parameter "postgres"))
(define db-name (make-parameter "test-db"))
(define db-password (make-parameter "mellon"))
(define db-port-num (make-parameter 5433))

(define (do-connect #:u [u (db-user)]
#:d [d (db-name)]
#:p [p (db-password)]
#:prt [prt (db-port-num)])
  (println (~a "In db.conf db-user: " (db-user)))
  (println (~a "db-name: " (db-name)))
  (println (~a "db-password: " (db-password)))
  (println (~a "db-port: " (db-port-num)))

  (postgresql-connect #:user u
  #:database d
  #:password p
  #:port prt
  ))

(define dbh (virtual-connection
 (connection-pool
  do-connect)))

(define (make-connect)
  dbh)

(provide (all-defined-out))


# file: "dbstuff.rkt"
#lang racket

(require db)
(require "db.conf")

(define/contract (dbh)
  (-> connection?)
  (make-connect))

(provide (all-defined-out)
 (all-from-out db)
 (all-from-out "db.conf"))


# file: "bar.rkt"
#lang racket

(require "dbstuff.rkt")

(command-line
 #:program "db demo"
 #:once-each
 [("--db-user") dbu "Username for database handles"
  (db-user dbu)]
 )

(println (~a "In bar: db user: " (db-user)))
(query-value (dbh) "select 'this should not have worked'")


# command line:

$ racket bar.rkt --db-user invalid_user
"In bar: db user: invalid_user"
"In db.conf db-user: postgres"
"db-name: test-db"
"db-password: mellon"
"db-port: 5433"
"this should not have worked"

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Re: Any work on demo.racket-lang.org?

2017-04-24 Thread Greg Trzeciak
Hi Tim

Regarding the Rosetta Code scraper - I have 90% of the task completed - I will 
post my code on github sometime tomorrow. It still needs some work to have it 
published - the number of code samples is huge so is the variety of issues 
encountered - one I haven't resolved is around MathML conversion into scribble 
doc. I will post more with a link to github repo. 

I don't know what's the story behind scheme cookbook as there was once a 
website you can get from the web archive: 
https://web.archive.org/web/20150318225436/http://schemecookbook.org/

Cheers

Greg

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Re: Racket Package Catalog Site and Raco Commands

2017-04-24 Thread Alexander McLin
While I have no strong preferences for whether it would be better to allow 
end-users determine what tags to apply as opposed to automatic system tags, it 
might be more effective to make provisions for special tags to be supported in 
info.rkt and have the catalog automatically read those tags if they are 
present. Developers and maintainers are already in a good position to furnish 
well chosen tags prior to uploading to pkgs.racket-lang.org.



On Monday, April 24, 2017 at 3:08:24 PM UTC-4, Jack Firth wrote:
> A `raco` tag for all packages that add raco commands is a great idea. I don't 
> think we should build some sort of system tag that's automatically added 
> though; I'd much rather have some way of granting "tagging rights" to a set 
> of catalog users and let them figure out what tags are appropriate for the 
> variety of packages we have today. Not all sensible tags will have automatic 
> means of detection. Here's a sample list of tags I'd like to have used 
> consistently across the catalog:
> 
> - raco: provides a raco command
> - testing: provides something useful for testing code
> - data: provides a data structure of some sort
> ...

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Re: Racket Package Catalog Site and Raco Commands

2017-04-24 Thread Alexander McLin
All of your suggestions are great and get my vote.

To elaborate on the raco tag, it should list all the commands *and* subcommands.

Example:

pkg package

tag: raco: pkg install, pkg update, pkg remove, etc.


-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Re: Racket Package Catalog Site and Raco Commands

2017-04-24 Thread Jack Firth
A `raco` tag for all packages that add raco commands is a great idea. I don't 
think we should build some sort of system tag that's automatically added 
though; I'd much rather have some way of granting "tagging rights" to a set of 
catalog users and let them figure out what tags are appropriate for the variety 
of packages we have today. Not all sensible tags will have automatic means of 
detection. Here's a sample list of tags I'd like to have used consistently 
across the catalog:

- raco: provides a raco command
- testing: provides something useful for testing code
- data: provides a data structure of some sort
- graphics: provides something related to drawing, images, or GUIs
- lang: provides a #lang language
- reader: provides something that modifies the racket reader, such as adding 
reader syntax for shorter anonymous functions
- sugar: provides a simple shortcut that's generally useful and not specific to 
a particular library
- documenting: provides something useful for documenting code
- syntax: provides something useful for macros and other syntax object 
manipulations
- concurrency: provides something useful for concurrent programming
- network: provides something useful for making network calls and implementing 
various protocols
- storage: provides something useful for persistent storage of values, such as 
database clients

Dear package catalog maintainers: I volunteer to scour the catalog and tag 
everything under the sun.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Any work on demo.racket-lang.org?

2017-04-24 Thread Tim Brown

[REPOST: APOLOGIES IF YOU GET A DUPLICATE]

Folks,

There is a task on the wiki intro projects:

 "Make a web page (demo.racket-lang ?) that contains Racket snippets.
  Use the programs from http://rosettacode.org/wiki/Category:Racket to
  get started."

I'm looking to:

a. scrape the Racket off RC and persist it somewhere
b. make up some kind of curated wiki to host that code (and examples
   from other sources)
c. make Racket look as capable of everything as we all know it is

I have some time, and would like to get started on such a project.
(In fact, I have my Sharpies out and am ready to go...)


But before I duplicate effort (or miss an opportunity to help out),
has anyone else started anything similar (specifically for Racket)?


I have already been pointed at "The Scheme Cookbook",
community.schemewiki.org and other things like pasterack.org

Tim

--
Tim Brown  - +447771714159

--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Racket Package Catalog Site and Raco Commands

2017-04-24 Thread Alexander McLin
First of all, I wish to express my appreciation for such a beautifully designed 
package catalog site located at pkgs.racket-lang.org.

I was wondering if we could add a special search term category or tag that list 
all available raco commands that packages may install?

For example, when building a minimal Racket for deployment to a production 
environment, I also wanted to include the test command. It took trial and error 
to figure out that the compiler package is responsible for installing the test 
command. It's not apparent from information available on the package list and 
the README linked to from the compiler package's Docs reference doesn't mention 
it.

And last but not the least.

The main page of the package catalog lists 738 packages which is a long list 
indeed and will grow without bound - which is a good problem to have! Search 
terms often still return hundreds of hits. May paging be added to reduce the 
list to manageable chucks? Something like the DataTable plugin for jQuery which 
implements client-side paging. Cf. https://www.datatables.net/ 


Best,
Alexander

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Bug in table-panel% ?

2017-04-24 Thread Zelphir Kaltstahl
Yep, that workaround seems to work, thank you.

I did not know about issues when deleting and adding children in an already 
shown widget/window. It's good to be aware, that such can make a difference.

I noticed now, that although the GUI is still very fast, still being very 
small, it flickers a little bit, when I switch between the tab panel's tabs, 
because I am deleting children and creating new ones to take their place. In 
the future, the children widgets in the tab panel are supposed to show some 
data. I am not sure how to avoid recreating them, as they grow larger in 
dimensions and content and the flickering might increase.

Maybe I am going about this updating widgets the wrong way, recreating them, 
instead of somehow changing their content. I'll observe this and maybe ask in a 
new post if necessary.

Thanks for your help!
I find the code for GUI in Racket to be quite elegant, compared to what I am 
used to in GUI libraries. It takes a little time to get used to the way how 
parent and child elements are handled, but so far it is great. Might be a few 
more widgets or containers would be nice to have in the standard library, for 
example the table-panel if it was working as well as the other widgets. 
However, so far I could find all I need.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.