IRC channel logs

2014-12-04.log

back to list of logs

<nalaginrut>morning guilers~
<cky>sneek: later tell davexunit Re string-set!, at least R7RS does not require an O(1) implementation. So you can use a totally write a read-optimised, write-unoptimised string implementation.
<sneek>Will do.
<davexunit>/me reads about "Relaxed Radix Balanced Trees"
<davexunit>
<sneek>Welcome back davexunit, you have 1 message.
<sneek>davexunit, cky says: Re string-set!, at least R7RS does not require an O(1) implementation. So you can use a totally write a read-optimised, write-unoptimised string implementation.
<davexunit>good to know, cky.
<cky>davexunit: So, for example, it seems like you can make your strings copy-on-write.
<cky>davexunit: Also string-ref is not required to be constant-time either, in R7RS. This allows implementations to use UTF-8 or UTF-16 underlying representations.
<davexunit>cool.
<davexunit>I mean, it's easy to use guile's strings as if they were immutable, much like we do with lists.
<davexunit>but it would be great if they just *were* immutable.
<davexunit>(and cons cells, too)
<cky>With lists, it's easy to argue for immutable, since lists are persistent data structures.
<cky>But strings aren't.
<davexunit>yeah, that's true.
<davexunit>though other imperative languages have immutable strings.
<cky>Hmm, I notice that the newly-released Xcode 6.1.1 uses clang 600.0.56 (as opposed to 600.0.54 in Xcode 6.1). Wonder if that fixes anything for Guile.
<cky>davexunit: Yes, that's true.
<davexunit>but yeah, I understand your point. building an entirely new string after each op without being able to re-use parts of the old one kind of sucks.
<ArneBab>davexunit: AFAIK Python does just that.
<ArneBab>davexunit: and python is knows for being good at string handling (mostly by having lots of convenience functions)
<ArneBab>knows→known
<dsmith-work>Morning Greetings, Guilers
<civodul>Hello Guilers!
<sneek>civodul, you have 1 message.
<sneek>civodul, tadni` says: https://libreplanet.org/wiki/Group:Guix/Suggested_Distro_Names
<civodul>neat, bikeshedding can now reach higher levels ;-)
<davexunit>has anyone done work on an immutable vector implementation for guile?
<davexunit>like clojure has.
*mario-goulart is surprised GNALD is not there
<davexunit>I've been reading about "relaxed radix balanced trees" in this paper http://infoscience.epfl.ch/record/169879/files/RMTrees.pdf?version=2
<davexunit>which offer "effectively constant time" operations
<civodul>davexunit: vlists are sort of "immutable vectors"
<civodul>that said, you should check ijp's "pfds" library
<civodul>it already has lots of useful stuff
<davexunit>pfds has hash array mapped tries, which this paper mentions
<davexunit>Clojure uses a 32-way branching tree
<davexunit>this paper builds on that to provide a structure that improves upon concatenation and inserts while not changing the time complexity of the other operations.
<civodul>right, so that's better than vlist in this respect
<davexunit>I should read how the vlists are implemented.
<davexunit>it would be cool for things like HAMTs to make it to core guile, no?
<civodul>a vlist is a list of vectors of exponentially increasing size
<davexunit>ah, okay.
<civodul>definitely!
<civodul>i think some/most of pfds would be nice in core Guile
<davexunit>I forgot that guile even had vlists.
<davexunit>I should use that for my minesweeper clone I'm writing
<davexunit>to represent the grid
<davexunit>instead of regular lists
<civodul>perhaps, yes
<cky>ArneBab: Re knows->known, are you a Dvorak typist? :-D
<cky>civodul: Re ijp's pfds and what not, I wonder how Guildhall is coming along. :-)
<ArneBab>cky: I’m using a self-optimized keyboard layout ☺ it’s called cry and I completed my 3 year test 2 months ago, so it should be time for my evaluation and a last optimization run. But I didn’t yet get to do that…
<cky>ArneBab: Interesting. I'm not quite that adventurous yet, but I've been using Dvorak for 11 years.
<civodul>cky: well, guildhall is still working AFAICS :-)
<ArneBab>cky: for english dvorak is really good, but it sucks for german