World: r3wp
[All] except covered in other channels
older newer | first last |
Pekr 12-Mar-2006 [2117x2] | oh, and I don't believe in "dll hell" - I don't suffer any ... for me external component requriement (codec, math module, whatever) is just one other dependency .... your script can already have tonnes of other ones, so :-) |
But it will be probably better to wait how Carl describes "rebol like never before" in technical terms :-) | |
Gabriele 12-Mar-2006 [2119x3] | one thing is "everything in", another thing is basic functionality in. |
if you want mp3 then you need to write a plugin for it. but we're talking about all the reblets that need to save their data somewhere | |
contact databases, chat programs, and millions of other reblets | |
Pekr 12-Mar-2006 [2122x2] | you mean database/storage as a default? That makes sense ... but I thought (knowing little about what RIF actually was supposed to be), that it will be RIF .... e.g. for me, RebDB was good way - because of the form of representation - not that it was written in rebol - simply you could very easily mold any value, it was text readable and you could maintain it by other script easily ... |
well, maybe I could regard its binary representation as a kind of rebin (whatever rebin was supposed to be :-) .... | |
Gabriele 12-Mar-2006 [2124] | rif is only rebol indexed file. an indexed file is not an rdb. of course, if no rdb matching our needs is found we'll just have rif... |
Terry 12-Mar-2006 [2125x2] | a contact db, or chat program requires a RDBMS? |
i'm guessing a flat-file would handle 99% of any reblets needs. | |
Ashley 12-Mar-2006 [2127] | An ISAM-like solution is pretty handy for folks who want something more than plain-text storage but something less than a full-blown RDBMS. |
Sunanda 13-Mar-2006 [2128] | I'd like a basic cross-platform data manager of the sort Ashley suggests. That can then be used to build SQL type databases for those who want them. Or list type databases (for people like me who use that sort of approach a lot) Or whatever. No need to prematurely bind to the relational model/ |
Robert 13-Mar-2006 [2129] | What's your "list type databases"? |
Henrik 13-Mar-2006 [2130] | I'm all for "everything in" if it doesn't blow up the executable size. "Everything in" is one of the main reasons I use REBOL. Imagine if we had to include VID, network, etc. from external libraries... |
Sunanda 13-Mar-2006 [2131] | An SQL type database is one where the basic unit of storage is an atomic data item, though packaged into rows / tuples. Getting rid of 1NF data (recurring groups) is the first thing you are taught to do. In a list type database the basic unit of storage is a list (think REBOL block). That's far from being 1NF, especially as a list can contain other lists. |
Thør 1-Apr-2006 [2132x3] | . |
. | |
. | |
Terry 1-Apr-2006 [2135] | Ok.. that's a bit excessive |
Jean-François 2-May-2006 [2136] | I'm looking for a good FTP Client for XP. Any suggestions? |
Henrik 2-May-2006 [2137] | well, Total Commander is ok |
Anton 2-May-2006 [2138] | SmartFTP |
Rebolek 2-May-2006 [2139] | TotalCommander is not bad, but misses secure FTP connection. FileZilla or UltraFXP were recommended to me. |
james_nak 2-May-2006 [2140] | What about Reichart's FTP client? |
Geomol 2-May-2006 [2141] | I've found the PuTTY suite of tools good: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Maybe PSFTP can do the job? |
Sunanda 2-May-2006 [2142] | SmartFTP is the one I use. |
Gabriele 2-May-2006 [2143x6] | Brian, what do you think about this? |
match: func [block rule /local recurse result] [ result: false parse block recurse: [ some [ rule (result: true) | into recurse | skip ] ] result ] | |
example: | |
qml-test: [ qml [toc [toc-title [font opts [face "georgia"] "Table of contents"]] [h1 [font opts [face "georgia"] "one"]] [para [font opts [face "georgia"] "bla " [font opts [face "times"] "bla"]]] [h1 [font opts [face "georgia"] [font opts [face "times"] "two"]]] [para [font opts [face "georgia"] [font opts [face "times"] "bla bla"]]] [olist [oitem [font opts [face "georgia"] [font opts [face "times"] "one"] " cont"]] [oitem [font opts [face "georgia"] "two"] " cont"] [oitem "three"] ] [h1 "three"] [para "bla bla"] [h3 "four"] [para "bla bla"] [h1 "five"] [h2 "six"] [h2 "seven"] ] ] | |
>> match qml-test [x: ['h1 | 'h2 | 'h3] to end (probe x)] [h1 [font opts [face "georgia"] "one"]] [h1 [font opts [face "georgia"] [font opts [face "times"] "two"]]] [h1 "three"] [h3 "four"] [h1 "five"] [h2 "six"] [h2 "seven"] == true | |
>> match qml-test [x: 'font to end (probe x)] [font opts [face "georgia"] "Table of contents"] [font opts [face "georgia"] "one"] [font opts [face "georgia"] "bla " [font opts [face "times"] "bla"]] [font opts [face "georgia"] [font opts [face "times"] "two"]] [font opts [face "georgia"] [font opts [face "times"] "bla bla"]] [font opts [face "georgia"] [font opts [face "times"] "one"] " cont"] [font opts [face "georgia"] "two"] == true | |
BrianH 2-May-2006 [2149] | Interesting. It would work with my XML data structure, assuming I used a block for the attributes rather than a hash (something I considered anyway). |
Gabriele 2-May-2006 [2150x5] | you can also build rewrite on top of it: |
rewrite: func [block rules /local rules* rule flag mk1 mk2 prod] [ if empty? rules [return block] rules*: make block! 16 foreach [pattern production] rules [ insert insert/only insert/only tail rules* pattern make paren! compose/only [ prod: compose/deep (production) ] '| ] remove back tail rules* until [ ;probe block ask "" not match block [mk1: rules* mk2: (mk2: change/part mk1 prod mk2) :mk2] ] block ] | |
or, you can collect the matched values: | |
collect: func [output block rule /local x] [ match block [copy x rule (append/only output x)] output ] | |
of course parse may not be the best for every kind of structure matching. but it can be a good start. | |
BrianH 2-May-2006 [2155] | I would like to review how this kind of structure matching is done in other functional languages with the feature. I like this version and would use it if it were there, but they may have solved some problems unforseen by us already. |
Gabriele 2-May-2006 [2156] | well the hard thing to do with parse is longest match. |
BrianH 2-May-2006 [2157] | My biggest problem with your rebcode rewrite rules was generating temporaries. I have the same problem with rewriting parse rules - actually more of one because of recursion problems. |
Gabriele 2-May-2006 [2158x2] | if you come up with a dialect idea, let me know; maybe it's possible to write a compiler to parse, or we can just implement it directly. |
rewrite is very tricky done this way | |
BrianH 2-May-2006 [2160] | Perhaps a supply of temporaries could be provided to the rewriter for it to use, and then it would complain if it didn't have enough. |
Gabriele 2-May-2006 [2161x2] | but probably rewriting is tricky in itself. |
you mean, temp local words? | |
BrianH 2-May-2006 [2163] | I mean words defined in the calling context that can be used as temporaries by the resulting code without having dificulties. |
Gabriele 2-May-2006 [2164] | do you have an example? (i don't know if we can find a general solution, but i'm sure each problem can be solved quite easily) |
BrianH 2-May-2006 [2165] | Parse has this problem in particular for its temporary variables - they aren't very recursion safe. You can do some hacks to make up for missing parse keywords using code blocks, but usually those need some temporaries. |
Gabriele 2-May-2006 [2166] | i usually just tend to avoid recursion when it is not really needed, and i try to stay alert when i need it ;) |
older newer | first last |