the.universe.hole
2020-3-2 17:20:28

@the.universe.hole has joined the channel


chris613
2020-3-2 20:02:10

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))


soegaard2
2020-3-2 20:02:46

define-match


chris613
2020-3-2 20:12:57

hmmmm im not sure thats what im after



soegaard2
2020-3-2 20:13:37

@chris613 Ah. I meant match-define.


chris613
2020-3-2 20:13:57

yes perfect!


chris613
2020-3-2 20:14:00

thanks


brentgordon146
2020-3-2 21:17:34

@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-&gt;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 "&amp;page=" page "&amp;tags="tags ) #:ssl? #t)) (define posts (read-json response)) (list-ref posts pos))


sorawee
2020-3-2 23:36:41

@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-&gt;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 "&amp;page=" page "&amp;tags=" tags) #:ssl? #t)) (define posts (read-json response)) (list-ref posts pos))


sorawee
2020-3-2 23:36:53

where do you want to sleep?


sorawee
2020-3-2 23:37:11

Is search-safebooru what you want to call every n seconds?


sorawee
2020-3-2 23:41:07

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-&gt;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 "&amp;page=" page "&amp;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