<solrize>hi does guile have any built-in dictionary libraries? <solrize>guile hash tables don't seem to have a way to test for membership, like hash-exists? in srfi-69 :/ <wingo>also guile has a srfi-69 module if you prefer that <solrize>yeah i imported srfi-69 and that works. i thought of using get-handle but it didn't seem right. if you're saying that's decent style then i'll use it <solrize>it's been a while since i've done any of this <solrize>is there a functional (persistent) dictionary available? avl tree or whatever i mean <wingo>not in guile core, besides alists of course <civodul>we'd have to check if this is still the case in 2.2 <civodul>vlists have better cache locality but there's a bit more code to run to walk them <civodul>so it's very dependent on the VM speed <random-nick>solrize: you can also make your own since guile exposes the hash function used in hashtables to scheme <solrize>oh I missed the above discussion. random-nick you can't use hashes for that because the idea is the maps aren't mutable <solrize>i.e. instead of (insert! map key item) you'd use (set! map (insert map key item)) if you wanted to update in place <solrize>but the idea is, insert returns a new map that shares most of its structure with the old map, usually a balanced tree <solrize>so you can have multiple snapshots active at the same time <random-nick>solrize: there are many functional maps that use hashing <solrize>random-nick, hmm, how do you insert stuff? <civodul>solrize: you can check the vhash doc above <civodul>it's similar to how you'd use alists with alist-cons etc. <random-nick>solrize: one I've seen is a prefix tree with a hash of the keys <solrize>hmm it's pretty late here, i better zonk out, will look at this tomorrow, it looks interesting <solrize>is insertion and deletion still O(log n) ? <wingo>it's a phil bagwell thing :) <civodul>for vhashes insertion is O(1) and deletion is O(n) IIRC <wingo>it's just lookup that's o(log n) then <lloda>paroneayea: re: truncation in the repl, in the mail daviid linked above, address@hidden should ofc be ~@y. It does work and it seems to me it's the intended method. It could be simpler, maybe. I mean it's already a one liner. <lloda>for exceptions it's a different story <nalaginrut>Artanis' brand new server core Ragnarok works just now! It's too fast to upload a 800M file so that I can hardly test the green-thread blocking issue ;-P <wingo>what do you use for green threads? <dsmith>Before I sumbit a bug report, this *ought* to work? echo '(help cons)' | guile <lloda>dsmith: it seems to work here. You don't get what you expect? <dsmith>stat("/usr/local/share/guile/guile-procedures.txt", 0x7ffd5f923330) = -1 ENOENT (No such file or directory) <dsmith>stat("/usr/local/share/guile/site/2.2/guile-procedures.txt", 0x7ffd5f923330) = -1 ENOENT (No such file or directory) <dsmith>stat("./guile-procedures.txt", 0x7ffd5f923330) = -1 ENOENT (No such file or directory) <dsmith>write(1, "No documentation found for:\\n", 28No documentation found for: <dsmith>write(1, "(srfi srfi-1): cons\\n", 20(srfi srfi-1): cons <lloda>Copyright (C) 1995-2017 Free Software Foundation, Inc. <lloda>Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. <lloda>This program is free software, and you are welcome to redistribute it <lloda>under certain conditions; type `,show c' for details. <lloda>`cons' is a procedure in the (srfi srfi-1) module. <nalaginrut>wingo: similar to what you did in built-in server, but I've made a more powerful one <dsmith>Is yours looking in the same place as mine? <lloda>it looks in PREFIX/share/guile/2.2/guile-procedures.txt, so w/o the 'site' <lloda>it also looks in the other place later, though <dsmith>Hm.. It *is* finding my guile-procedures.txt, I wasn't looking at the whole strace output. <dsmith>But it's still not finding cons in it <dsmith>Woah. When I grep for cons, I get acons, cons*, and cons-source only <lloda>yeah, cons isn't in guile-procedures.txt. If /I/ use guile -q, my guile doesn't find cons either. But I have (import (texinfo reflection)) in my .guile, so if I don't use -q, it seems to find doc for cons through that. <lloda>anyway there're TONS of basic functions that return 'No documentation found'. <dsmith>So guile *is* finding things in the .txt file, cons is just no longer there. <lloda>I was going to say 'if it ever was', but 2.0 does have it. Hmm. <dsmith>No problem I guess. Except that the help for cons went away. Not that I need to see it. It was just my goto help example. <sneek>`cons' is a procedure in the (guile) module. <sneek>- Scheme Procedure: cons x y <sneek> Return a newly allocated pair whose car is X and whose cdr is Y. <sneek> The pair is guaranteed to be different (in the sense of `eq?') from <sneek> every previously existing object. <dsmith>Because it's short enough to display in the channel. A longer message would be private. <ertes>hi… i have the following problem: guile is not installed at a standard location, so i can't easily use any of the hacks that guile provides to make a script executable <ertes>doesn't work: #! /usr/bin/env guile -s <ertes>doesn't work: #! /usr/bin/env guile \\ <ertes>are there any other options? <ertes>i'm interested in using -e, but if that's not possible, i'll just call 'main' myself manually from within the script <ertes>also is there a way to silence the BIG AND NOISY "NOTE THIS SOURCE FILE IS NEWER" COMPILATION MESSAGE and just compile silently? <lloda>ertes: fix PATH? or put a link to your guile somewhere in your path. ~/bin is what I use. <lloda>re: compile messages, the default advice here is --no-auto-compile <ertes>lloda: that's not the problem… guile itself is not in a standard location <ertes>and the system treats everything after the first word on the hashbang line as a single argument <ertes>"#! /usr/bin/env guile -s" → can't execute the program "guile -s" <lloda>sorry I don't get it. You can point a link anywhere. <lloda>ln -s guile_somewhere ~/bin/guile <ertes>i understand that, but if that's the only option, i'll go for calling 'main' manually… seems less of a maintenance burden <ertes>"-e main" is pretty much equivalent to having a "(main (command-line))" at the end, right? or are there any subtleties? <ertes>exec guile -l fact -e '(@ (fac) main)' -s "$0" "$@" <ertes>that's pretty clever… i'm going to use that =) <ertes>is there a variant of 'case' that uses 'equal?' instead of 'eqv?'? <ertes>OrangeShark: exactly what i need, thanks! ***berndj-blackout is now known as berndj
***fitzgen_ is now known as fitzgen
***guile-guest1 is now known as Muto
***ertesx is now known as ertes
<amz3`>paroneayea: are you using a modified version of guile-websocket in mudsync? <paroneayea>I snarfed it without being sure how much modification would be needed <amz3`>ah ok, I am trying to make it work with fibers, <paroneayea>amz3`: it should work but you'll have to reimplement the server.scm or whatever it's called yourself <paroneayea>use it as a base and transform that... the rest should work as-is <amz3`>and it block on 'port-eof?' and 'get-u8' <amz3`>then I must have done something wrong