<davexunit>ArneBab: noticed that you were mentioned in the latest mail to the SRFI mailing list <davexunit>for providing ways for people to contribute without using GitHub <davexunit>I want to conditionally define a variable in a module, but I'm not sure the best way to do it. <davexunit>I want something like (unless (defined? 'foo) (define foo 'bar)), where the 'define' form occurs at the module top level. <ijp>well, you can almost do it that way, you just need define! or module-define! <ijp>maybe cond-expand can do it, I don't know <davexunit>I'm just trying to work around some stuff in guix. <davexunit>there's a module that both a statically linked guile and a "regular" guile use, but the statically linked version has to define some things that the other versions already have. <ArneBab_>sneek: later tell davexunit: we discussed during the last few days. Now the important part to stabilize the non-Github workflows is that people actually use them. ***michel_mno_afk is now known as michel_mno
<ijp>the best reason to learn anything is because you want to, not because of some wiki page that hasn't been updated in 5 years <taylanub>lf94: the page is just plain wrong on some things. e.g. "parameters" (filling the role of dynamically scoped variables) were widely available since a long time and have recently been standardized. <nalaginrut>this wiki page is terrible, I/O and unicode in modern Scheme is not a problem at all <taylanub>oh I didn't realize this was #guile not #scheme. in that case the page would be even more wrong since it's about "all Scheme implementations" and not Guile specifically. <nalaginrut>well, maybe Scheme world doesn't need more hackers, but wiki writers... <ijp>I couldn't even tell you the last time I looked at schemewiki <ijp>other than 40 minutes ago, that is <nalaginrut>and standard module system interface is solved in R6RS, IMO <nalaginrut>I don't even know this page if you don't show me... <nalaginrut>and the understand of handling exceptions in Scheme is still stop at old-bad-time, playing continuation game, rather than catch/throw <zacts>hm... I need to remember the difference between the various R5RS, R6RS, and the R7RS-tiny and R7RS-large <zacts>also, wasn't there some controversy of the direction R7RS-large has taken? <ijp>theres controversy over everything <zacts>(but, hey for now I'm a newbie) <ijp>the internet needs some way to occupy its time <nalaginrut>and the OO system, hmm...oh, I don't use OOP, I love closures+msg passing... <nalaginrut>...with inheritance in r6rs record-type, people may call it OOP too... <taylanub>zacts: there was controversy over R6RS, there was/is controversy about R7RS-small being too incompatible with R6RS, and there is controversy about R7RS-large heading a really weird direction. <ijp>I thought r6rs-large was controversial before it was cool <taylanub>TL;DR: I think R7RS-small is pretty neat, and R6RS has some very neat parts too, so I wish people would try to work on some R6RS/7RS-small consolidation now, before moving on. (and when they do, move on on a better path than the one R7RS-large so far is moving on...) <zacts>(or is it close to what SICP uses) <taylanub>if it all doesn't work out and I'll be forced to choose between Guile and "Scheme" (with the scare quotes :P) then I'll definitely choose Guile, but I really wish people didn't have to choose between Scheme dialects, only implementations... <ijp>zacts: r4rs + assorted mit scheme stuff <lf94>taylanub, are there decent CL vs Guile comparisons around? <taylanub>lf94: don't know of any. in practice you'll probably want to compare Clisp vs. Guile or SBCL vs. Guile, and not "CL" vs. Guile. the CL standard is bigger than the Scheme standards, but is also quite lacking in some things IIRC, like multithreading, so comparing the CL standard to Guile would in turn be unfair to CL <lf94>In that case, I shouldn't be worried about learning Guile. :) <lf94>What's the best Guile source to learn from? The manual? <lf94>The only thing I know about lispy languages is (+ 1 2 3 4) <lf94>Oh, and the recursion is used to iterate over things <lf94>I figured I could apply some of my Haskell knowledge to Guile though. <nalaginrut>"What's the best Guile source to learn from?" is a good question that I never thought... <taylanub>lf94: the Guile manual is pretty good I think <lf94>I like reading GOOD source code to learn some idioms and style. <lf94>I don't anything scheme specific though <ijp>then the manual is what we've got <ijp>it's not fantastic, but it's not horrible either <amz3>lf94: please, tldr, what is repulsive? <taylanub>amz3: the page was about Scheme in general (with all the bad implementations included) and also outdated. <lf94>Also who's running guile emacs here? Noticeable performance boost? <ijp>probably negligible if any <lf94>For example, list-packages hangs I guess because the lack of concurrency in emacs...lisp? So is that still an issue with guile emacs? <lf94>I guess this is the wrong channel to ask this~ <nalaginrut>guile has pthread at least, so maybe it could be better then <taylanub>lf94: Guile Emacs isn't "ready" yet and rather still has performance regressions IIRC <phant0mas>how can I get argv[0] from inside libguile/load.c ? <phant0mas>because we don't have /proc/self/exe in hurd!! <mark_weaver>I'm sorry, I'm asking from a higher-level, what are you trying to accomplish? <mark_weaver>why do you want to know the value of /proc/self/exe? what are you going to do with that information? <phant0mas>a okay, so in the bootstrap-guile we need to find the path so we can set the GUILE_LOAD_PATH <phant0mas>that why I am getting the errors we were talking yesterday <phant0mas>and the dladdr() way cannot work with static binaries <mark_weaver>well, as it says in the comment, in guile-relocatable.patch, "Note: Use /proc/self/exe instead of argv[0] because the latter is not necessarily an absolute, nor a valid file name." <taylanub>(and realpath(3) part of glibc it seems) <mark_weaver>well, I don't know how to get argv[0] anyway, short of plumbing it in from main. <mark_weaver>phant0mas: maybe the thing to do is to make a "wrapper" for the bootstrap guile. ***michel_mno is now known as michel_mno_afk