@the.universe.hole has joined the channel
define-values seems to do what i would consider “deconstruction” assignement. but it only works on (values)
not lists or structs or anything, Am i missing a simple trick to do something like (define-values (one two three) (chunk 10 some-big-list))
define-match
hmmmm im not sure thats what im after
@chris613 Ah. I meant match-define
.
yes perfect!
thanks
@sorawee you can reproduce the issue I’m having by running this (define safebooru "<http://safebooru.donmai.us\|safebooru.donmai.us>")
(define limit "20")
(define page (number->string (random 1 350)))
(define tags "mario_(series)")
(define pos (random 19))
(define (search-safebooru)
(define-values (status header response)(http-sendrecv safebooru (string-append "/posts.json?limit=" limit "&page=" page "&tags="tags ) #:ssl? #t))
(define posts (read-json response))
(list-ref posts pos))
@brentgordon146 I can run:
#lang racket
(require net/http-client
json)
(define safebooru "<http://safebooru.donmai.us\|safebooru.donmai.us>")
(define limit "20")
(define page (number->string (random 1 350)))
(define tags "mario_(series)")
(define pos (random 19))
(define (search-safebooru)
(define-values (status header response)
(http-sendrecv safebooru
(string-append
"/posts.json?limit="
limit
"&page="
page
"&tags="
tags)
#:ssl? #t))
(define posts (read-json response))
(list-ref posts pos))
where do you want to sleep
?
Is search-safebooru
what you want to call every n seconds?
This seems to work for me:
#lang racket
(require net/http-client
json)
(define safebooru "<http://safebooru.donmai.us\|safebooru.donmai.us>")
(define limit "20")
(define page (number->string (random 1 350)))
(define tags "mario_(series)")
(define pos (random 19))
(define (now) (- (current-seconds) start-time))
(define (search-safebooru)
(printf "called at ~a\n" (now))
(define-values (status header response)
(http-sendrecv safebooru
(string-append
"/posts.json?limit="
limit
"&page="
page
"&tags="
tags)
#:ssl? #t))
(define posts (read-json response))
(begin0 (list-ref posts pos)
(printf "finished at ~a\n" (now))))
(define start-time (current-seconds))
(let loop ()
(thread search-safebooru)
(sleep 20)
(loop))
It produces:
called at 0
finished at 1
called at 20
finished at 21
called at 40
finished at 41