World: r3wp
[Core] Discuss core issues
older newer | first last |
Janko 3-Jul-2009 [14217x6] | http://www.blackpepper.co.uk/black-pepper-blog/QCon-Persistent-Data-Structures-and-Managed-References.html |
This is where persistent data structures come in. Based on the work of Phil Bagwell, Rich Hickey described how he used bit partitioned hash tries to make efficient "copies" of data structures, and this forms the basis of data storage within Clojure. Essentially all data is stored in a tree and when one makes a copy with a small change, one can create a tree with a new root and only the path to the changed item needs to be copied and modified. The rest of the tree's branches remain precisely the same. This significantly reduces the amount of copying that is required and makes multiple "versions" of a data structure entirely practical. | |
<<< that upthere is a excert from that article | |
hm.. it mentions trees like you with that strings .. having strings like that in rebol would really be awesome | |
and if you want to do for example efficient message passing concur. it's also cruicial to have this sort of data.. because message is always a copy .. if you are using message passing for distr. compuring - only between computers then you have to copy anyway so it's no penalty .. but if you use message passing for concurrency /paralel execution on one computer then copying data for messages each time will have a high penalty , but it wouldn't with ropes for example | |
Graham, your comment about diagram inspired me to do some drawing .. http://www.itmmetelko.com/blog/img/actor-net-scheme_t.gifI added it to blogpos | |
BrianH 3-Jul-2009 [14223] | Plus, if you have immutable data structures you can copy them or not, or even persist them, with no change in semantics. |
Graham 3-Jul-2009 [14224x3] | janko .. I see drawing is not your strong point! :) Try this tool http://map-editor.s3.amazonaws.com/map-editor.exe |
It's just the Rebol 3flex script encapped. | |
To use it, double click on the blank canvas to create nodes, and double click on nodes to edit them. Drag arrows from one node to another by click and drag from the left bottom corner. Control-L to load a new map Control-S to save a new map | |
Janko 3-Jul-2009 [14227x2] | Brian, yes.. since I like the FP a lot immutable stuff is certanly what I like , I sometimes discover looking at things this way solves or uncomplicates a lot of traditional imperative problems |
Graham.. very very cool .. it seems that you have pockets full of magic rebol tools :) .. This graph editor is really nice and works smooth | |
Janko 4-Jul-2009 [14229] | I have updated the drawing again since I missed some connections . I was thinking .. once the "looks" of actor net is solid we should really move network stuff to uniserve to get the stable and fast network base.. it's one 1 function now so it shouldn't be too hard. Then I could actually recommend others to use it. |
Graham 4-Jul-2009 [14230x2] | Janko .. not wriiten by me! I just encapped it :) |
See the !3flex channel here. | |
Graham 9-Jul-2009 [14232] | Twitter have updated their API .. so now if you post using their API, it says so whereas it used to say posted from the web. |
Graham 13-Jul-2009 [14233] | Janko, how about attempting a CORBA interface ... that would mesh in with what you're doing |
Pekr 16-Jul-2009 [14234] | call/output does not work, when console is not being run? I tried to convert some character sets, prepared short script, and run it by double-clicking .r file. No result was shown and rebol process is hang in memory. It was enough to put one print statement so that console showed up, and it was OK then. But that is weird, I wanted it to run without REBOL console showing up ... |
Gregg 16-Jul-2009 [14235] | Yes, that's a known issue. |
Graham 20-Jul-2009 [14236x3] | What happened to the open/async ? |
as per http://www.rebol.net/docs/async-examples.html | |
I read somewhere that if you do any other IO during async, that will break the async. True?? | |
Maarten 20-Jul-2009 [14239] | Within an async handler things might get unpredictable. If you have a normal event loop, including async in the wait-list, I think you should be good. |
Graham 20-Jul-2009 [14240x3] | I was wondering how to download a 120Mb file from S3 |
and wanting to do it async while write/binary/append in the async handler | |
was open/async removed after 2.5.5 ?? | |
Maarten 20-Jul-2009 [14243x2] | Yes. |
It interfered with the garbage collector and was one of the reasons to start R3 development iirc (the whole port subsystem, actually). | |
Pekr 20-Jul-2009 [14245x3] | Graham - you don't need the async mode in order to behave in an async like manner ... |
I can send you short script called "multiserver", which is able to accept connections from various IPs, save content to file, it simply multiplexes on opened ports .... | |
the script is very short, commented. It served as example for my friend learning REBOL. | |
Graham 20-Jul-2009 [14248x2] | That's okay Pekr ... I was just trying to see if I could use the style as written by Carl. |
Maarten ... when did that become common knowledge?? I had endless issues trying to upload files async, and it only worked by turning off GC .... but of course killed my program with huge memory use :( | |
Ashley 20-Jul-2009 [14250x2] | Anyone have a nifty func to "untrim" a string? Something that converts: "ArialBold" to: "Arial Bold" Best I can come up with is a horrible replace loop: foreach char "ABC ..." [ replace/all next string char join " " char ] replace/all string " " " " ; handle case where words were already space seperated |
replace/all next -> replace/all/case next | |
Graham 20-Jul-2009 [14252] | you want to insert spaces before each caps ? |
Ashley 20-Jul-2009 [14253] | Yep |
Graham 20-Jul-2009 [14254] | can't you use parse |
Ashley 20-Jul-2009 [14255] | One of the few things I've yet to master in REBOL! ;) |
Graham 20-Jul-2009 [14256x3] | caps: charset [ #"A" - #"Z" ] non-caps: complement caps parse "ArialBold" [ some [ copy fontname name (print fontname) ]] |
>> parse "ArialBold" [ some [ copy fontname name (repend out [ fontname " " ]) ]] == true >> out == "Arial Bold " | |
close enuf ?? | |
Ashley 20-Jul-2009 [14259] | ** Script Error: name has no value |
Graham 20-Jul-2009 [14260x2] | name: [ caps some non-caps ] out: "" |
cut and paste works poorly in windows :( | |
Ashley 20-Jul-2009 [14262x2] | and Mac ... |
Thanks, that's enough for me to start with. | |
Graham 20-Jul-2009 [14264] | >> parse next s: "ArialBoldItalic" [ some [ some non-caps [ end | mark: ( insert mark #" " ) skip ]] ] == true >> s == "Arial Bold Italic" |
Ashley 20-Jul-2009 [14265] | Even better! |
Graham 20-Jul-2009 [14266] | I'm waiting now for Ladislav's answer ! |
older newer | first last |