IRC channel logs

2019-10-23.log

back to list of logs

***daviid is now known as Guest89808
***Guest89808 is now known as daviid
<reepca>I've just discovered some "interesting" behavior of the reader: (let ((ests "foo")) (list #tests)) => (#t "foo"). Not sure if technically a bug, but not behavior anyone should count on and confusing to people making syntax errors accidentally
<str1ngs>reepca: I don't think that's a bug. consider this (liset #t'est) => (#t est)
<str1ngs>err (list #t'est)
<str1ngs>maybe the bug is the lack of spacing between list items?
<reepca>quotes shouldn't normally be used to separate atoms. 2'3 is one symbol, as is foo'bar. I think it would make a lot of sense for #tests to be a syntax error, and for it to be necessary to write #t ests to get the current behavior. Though I'm not sure what the standards actually mandate in this area.
<str1ngs>reepca: probably more of how #t is evaluated then anything else
<str1ngs>#t is a boolean of course
<reepca>aye
<str1ngs>it's an interesting question. though not many scheme programmers would program like this.
<str1ngs>maybe someone new to scheme would run into this
<reepca>str1ngs: aye, it actually just happened to someone new to scheme writing a package over in #guix
<str1ngs>based on the context of #:test keyword issue in #guix anyways
<nisstyre>so they forgot a colon and it parsed it as two tokens
<amz3>r7rs ftw!
<nly>is there any way to get all the bound symbols in an environment?
<amz3>nly: no, in general scheme is has no or limited introspection.
<amz3>nly: no, in general scheme has no or limited introspection.
<amz3>sorry, maybe guile is different in this regard, you can introspect modules, so if an environment in guile is also a module you might be able to see what is bound.
<nly>amz3 ok
<amz3>nly: what are you trying to achieve? what is the big picture? maybe you could use a hash-table to store the variables?
<nly>i need a list of procedures applicable in a problem domain: say (+ - *) in arithemetic
<amz3>better create a hashtable, I had a similar problem years ago mark w. told me to use hash-table. That being said, you can also rely on module introspection, but that imo would be less nice.
<amz3>my problem was about the implementation of "filters" in template system. the filter were in the end, stored in hashtable.
<nly>ok, i can make some progress with that
<amz3>fwiw, in python relying on introspection (such as locals(), globals() or even getattr(some_module, 'some_object')) to achieve such behavior frowned upon. Introspection is nice at the REPL for discovery, but in real-world. I always rely on dict-switch pattern instead. It is more grep-able and it is also more efficient.
<amz3>I am not sure about Common Lisp or elisp, my understanding is that since they are LISP-2, that kind of behavior is common place.
<nly>thanks, i guess i should try both routes
<wingo>civodul: managed to rebase srfi-35 on top of core make-record-type; have a look if you like
<jcowan>I have a pre-SRFI for compound objects, a generalization of compound conditions, at https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/CompoundObjectsCowan.md
<jcowan>it tries to hide the difference between compound and non-compound objects as much as possible.
<wingo>jcowan: in what cases have you ever wanted a generic concept of compound objects?
<dsmith-work>Hey Hi Howdy, Guilers
<jcowan>It brings some of the power of multiple inheritance to single-inheritance systems without the many complications of full-blown multiple inheritance. ANSI CL has always had multiple inheritance, so it doesn't need compound exception.
<jcowan>s/exception/conditions
<wingo>guile has goops for the generalized multiple-inheritance case. for me multiple inheritance a better solution if you need perf; it's a more type-driven approach than object composition
<jcowan>Good point, but the implementation of compound objects doesn't have to be dumb. I don't know what R6RS systems do in general.
<wingo>i think for compound exceptions, it's more of a data composition thing than a type thing
<wingo>in implementations anyway
<chrislck>ok sorry to bother the greats, what's the issue with deprecating (make-record-type "string" ...) because it'll be a much harder work to fix this in gnc.
<chrislck>(record-constructor arg1 arg2) is nearly eradicated.
<wingo>i feel like every 5 years or so i get to uncruft some aspect about guile's records
<wingo>maybe one day that horrible layout symbol will go away
<amz3>my trying to understand why the blue zombies company use "fiber" word for their most successful software of all the time.
<amz3>formely they were advertising a free as free-beer forums.
<amz3>now it is just a spy agency.
<dsmith-work>A high-fiber diet keep "information" flowing?
<amz3>yes, slowly flowing, if you benchmark the form that captures your personal info. Private info harvesting is mostly done in the background, but keep being shutdown because: "no more battery".
<amz3>around 34 fields in the base record.
<amz3>and the code does only foo.xyz = bar.xyz otherwise said, a shallow copy. #XXX: OPTIM
<amz3>ditto, that is an optim because some a core language feature of the language is dubbed _too slow_ and because "This code is DEV-only so size is not a concern."
<amz3>well, I started reading that to become more clever, but I feel not very well, I think I have a very bad NIH syndrom.
<amz3>the code for development (DEV) is not the same than producion.
<amz3>the code is riddled with: if (__DEV__) { frob } where DEV means dev time.
<amz3>(from the point of view of the coder ;)
<amz3>here is the kind of helpful message, state-of-art computer engineering can produce in terms of literate^M documentation:
<amz3> if (__DEV__) {
<amz3> // DEV-only fields
<amz3>to get started, s/DEV/DEBUG/
<amz3>to get started, s/DEV/DEBUG/g
<amz3>here be dragons and its children http://paste.debian.net/plain/1109418
<amz3>s/its/their/
***ng0_ is now known as ng0
<amz3>I added that to my to read list: https://scheme-lang.com/Screenshot_2019-10-23%20Continuations,%20coroutines,%20fibers,%20effects.png
<amz3>so far my understanding is they are building a "scheduler" in the sens of OS kernel to "batch" rendering operations, in the forms of DOM add/update/delete (update can include style attribute modifications)
<amz3>in oreder to give animation highest priorities, and actual knowledge low priority.
<amz3>that happens to be my experience with their so called book.
<amz3>from the start I made mistake rely on that software, but now, there is two possibily: a) it is genius hence not ready yet, (like the code and documentation mention it) d) ... </complaining>
<amz3>s/d)/b)
<amz3></review>
<amz3>dsmith-work: you do not use their apps, I think, the web app is VERY slow.
<amz3>not mentioning a critical bug they claimed did not exsits and was fixed in later version.
<chrchr>Hi! I've just installed a guix system specifically to mess around with chickadee. So I do 'guix install chickadee' and I expect that I should then be able to do (use-modules (chickadee)) in guile, but I get "no code for module (chickadee)". Suggestions?
<civodul>chrchr: hi! perhaps you need to "guix install chickadee guile" and then follow the instructions to set GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH accordingly?
<chrchr>civodul: I will pursue that. Thank you!
<civodul>yw!
<chrchr>Progess! Now failing like so: "In procedure dynamic-pointer: Symbol not found: glGenTextures"