IRC channel logs

2020-12-11.log

back to list of logs

<fnstudio>hi, i don't seem to be able to use a `case` conditional as my key is not being matched with its value
<fnstudio>the key is a string
<RhodiumToad>case uses eqv? for comparison
<fnstudio>and i can see it correctly contains a string, say "foobar"
<RhodiumToad>two strings with the same characters which are not the same object are not eqv?
<fnstudio>RhodiumToad: right, i think i hit this the other day as well
<fnstudio>ah
<fnstudio>i see
<RhodiumToad>basically, for objects that are composed of many parts, only equal? compares the parts for equality
<fnstudio>ok, fair enough, i got it now - thanks for putting me back on track, i thought i was going crazy
<fnstudio>:)
<RhodiumToad>eqv? compares simple values like numbers
<RhodiumToad>eq? compares only identity of objects
<fnstudio>RhodiumToad: right, makes sense - hope my brain will eventually digest that :)
<fnstudio>RhodiumToad: thanks v much
<fnstudio>ok so it boils down to use `cond` when it comes to string-based keys
<RhodiumToad>if these are constant strings, you might consider whether they would be better handled as symbols instead
<chrislck>fnstudio: learn (ice-9 match)
<fnstudio>hm... interesting
<fnstudio>chrislck: let me check that
<RhodiumToad>and yeah, match can handle strings
***scs is now known as Guest54828
<RhodiumToad>but there are many cases where string->symbol and comparison of symbols may be more efficient than doing lots of equal? or string=? on strings
<fnstudio>(i must admit i ended up using `cond`... lazy me)
<fnstudio>(but i bookmarked string->symbol and match)
<tohoyn>sneek: botsnack
<sneek>Welcome back tohoyn, you have 2 messages!
<sneek>tohoyn, daviid says: this is a sign that in the 'context' of the execution that triggers these warnings, you are not following the recommendations given in the manual wrt merging generics -
<sneek>tohoyn, daviid says: I actually added a manual subsection for ths - https://www.gnu.org/software/g-golf/manual/html_node/Configuring-Guile-for-G_002dGolf.html#Configuring-Guile-for-G_002dGolf
<sneek>:)
<apteryx>is there a way to expand the parameters of a list in-place; that is, not inside a quasiquote list?
<apteryx>there's this thing in Guix called 'invoke'. It wants arg1 + arglist, then passes does with it (apply system* arg1 arglist). I'm trying to figure a way to do (invoke arg1 arg2 ... (expand-args %list-of-default-args)).
<apteryx>s/passes//
<apteryx>perhaps using apply on it...
<apteryx>alright, this works: (apply invoke "echo" "a" "b" '("c" "d"))
<dsmith-work>Happy Friday, Guilers!!
<RhodiumToad>yo
<fnstudio>hi, what options do i have if i want to terminate my program in case something unexpected happen, as in "we only got here because of some corrupted input data"
<fnstudio>something that one would normally handle by throwing an exception i guess
<RhodiumToad>do you want to terminate regardless of any exception handler?
<fnstudio>i'm happy for my program/script to simply terminate abruptly
<fnstudio>RhodiumToad: yeah, a quick and dirty termination would be fine
<RhodiumToad>in order of increasing dirtiness, maybe (exit), (primitive-exit), (primitive-_exit) ?
<fnstudio>RhodiumToad: (exit) looks interesting... maybe i should have thought of it? :)
<RhodiumToad>(quit) and (exit) are the same, and apparently unwind the scheme context first
<RhodiumToad>whereas (primitive-exit) does not, and (primitive-_exit) does not even flush i/o or run atexit functions
<lloda>if you never catch #t, then you can just throw a unique exception
<RhodiumToad>in 3.x, (quit) will be caught by a with-exception-handler
<RhodiumToad>so for example (let/ec ret (with-exception-handler (lambda (e) (ret 1)) (lambda () (quit))) will just return 1 and not actually quit
<RhodiumToad>or (with-exception-handler (lambda (e) 1) (lambda () (quit)) #:unwind? #t)
<euandreh>As I get my hands more and more dirty with Guile, I'm impressed by its documentation
***rekado_ is now known as rekado
<rekado>euandreh: I had the same experience, though towards the “weirder” modules the documentation becomes a little sparse.
<rekado>(e.g. sxml or peg)
<dsmith-work>"weirder" is usually docs imported from upstream.
<euandreh>I actually liked the peg, but I was already familiar with peg parsing
<euandreh>coming from CL, elisp and Clojure I'm enjoying Guile
<euandreh>the C interop is fantastic
<spk121>hello guilers. Is there a way to set a hard limit to the maximum memory Guile can allocate?
<davexunit>piggy backing on spk121's question: what's the best way to get general diagnostic information out of the guile runtime?
<davexunit>memory usage and stuff like that. would be nice to pull this information into a time series chart to monitor application performance.
<civodul>spk121: no, there's no way to do that (apart from the OS rlimits)
<civodul>davexunit: yeah, it would be nice to have a heap profile
<civodul>*profiler
<davexunit>agreed. I do a lot of application monitoring at $dayjob and that's pretty crucial stuff.
<euandreh>autotools question: I have scripts/assert-shellcheck.sh that runs on the repo, but it shouldn't be included in 'make dist'. How can I run it with 'make check' but not on the final dist tarball?
<euandreh>I expected that the 'check-local' target would not be included in the final dist
<euandreh>what happens is that 'make distcheck' says doesn't exist, but that is desired
<euandreh>I wanted a 'check-local-dev-only' target, or something similar
<leoprikler>euandreh: you could try to use conditionals to simply not expand your check-local when called from make dist-check
<leoprikler>for instance make it so you have to pass --development-mode to configure for the option to become visible
***scs is now known as Guest45799
<apteryx>hm, in which module is the compile procedure defined?
<spk121>apteryx: the compile from 'guild compile'? It is actually in 'scripts. module/scripts/compile.scm in the tree. or /usr/share/guile/3.0/scripts/compile.scm in the install
***scs is now known as Guest76722