IRC channel logs

2023-09-02.log

back to list of logs

<daviid>RhodiumToad: for info, see the last 3 commits - g-golf devel branch that is ...
<RhodiumToad>daviid: ok, I'll keep that in mind for the next release
<RhodiumToad>I updated the freebsd port to -a.5 already (yesterday)
<ArneBab>mwette: guile-emacs on wasm would be pretty crazy / awesome ☺
<graywolf>Hello, I have a scheme question. Assuming I have a variable foo, is (let ((foo foo)) foo) well define? In other words, can I shadow a variable while still using its value to set a new variable of the same name? It seems to work, but I want to make sure that it is actually well defined.
<rlb>graywolf: I believe that's fine.
<graywolf>cool, thanks :)
<rlb>(Of course you'll need "let*" for multiple rebindings.)
<graywolf>Hm, that is interesting idea. It the let vs let* difference required, or just allowed as an optimization opportunity? Will (define foo 1) (let ((foo foo) (_ (set! foo 2)) (foo foo)) foo) behave the same across all scheme implementations, or can the behavior differ?
<graywolf>Is the*
<rlb>Let does not specify ordering: https://www.gnu.org/software/guile/manual/html_node/Local-Bindings.html
<rlb>(let* does)
<graywolf>Oh, so if the functions in the value part have side effects, that could get inresting. Good to know, thank you.
<janneke>graywolf: i believe that using non-functional side-effects, except maybe for (debug) printing, is generally frowned upon
<janneke>...besides memoization/caching/hash-table usage
<mwette>(let ((foo 1) (foo 2)) #t) will generate an error; (let* ...) will not
<mwette>graywolf: and while this is in your head, you may want to check out letrec and letrec*: https://www.scheme.com/tspl4/binding.html#./binding:h4
<daviid>RhodiumToad: ok great, and thanks for the freebsd update -