r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!Liquid] any questions about liquid dataflow core.

Maxim
5-Feb-2007
[81x2]
oops  typed a bit too quickly...	

do %slim.r
liquid: slim/open 'liquid 0.6.4
what user interface?
Anton
5-Feb-2007
[83x2]
A GUI, when a hypothetical "GUI" option is chosen.
>> do %slim.r
'slim is defined, no choice about that.
Maxim
5-Feb-2007
[85]
you mean to install libs?
Anton
5-Feb-2007
[86]
Yes, hwo files are managed should be clear.
Maxim
5-Feb-2007
[87x4]
slim lets you put files where you want (in many dirs if you want) 
and even allows loaded-lib relative resource dirs.
if I say that a gui manager was needed... every reboler on this list 
would complain that its too complicated and would be scared that 
the lib manager does things behind the scenes.
hehe.
wrt the slim word... you can rename it in the slim.r file if you 
really want to... but its your call.
Anton
5-Feb-2007
[91x2]
Would it work, though ? I would have to do some investigation to 
see if it would work. Something I would rather not have to do.
must go, later.
Maxim
5-Feb-2007
[93]
ciao.
Mchean
9-Feb-2007
[94x2]
ok...i have briefly read the documentation on slim up to 2.5.  I 
have limited experience with rebol, so I'm trying to get clear on 
what problem it solves.
If i understand correctly slim allows you reuse libraries or modules 
in other programs by opening them as opposed to cutting and pasting 
the module into the rebol script?
Maxim
9-Feb-2007
[96x5]
its more like what value it adds ;-)  but the core featues are:
-loading external code, but in a managed way

-path resolution, allows you to put libs in one or many folders, 
a part from code and reuse.
-version verification.

-enforcing of a standard, where all the code is wrapped in one context 
and the use of 'set is illegal (nothing gets bound to global context)

-allowing the user of a lib the choice of exposing what words he 
wants in his code.
and even automatic renaming of exposed words.
and many more features, like vprint, engine for advanced management 
of verbosity and powerfull indented tracing of your code.
if you only want to use slim for testing out liquid, I suggest to 
follow the quickstart, it should get you started in a few minutes 
without fuss.
ah... just wanted to announce a little milestone of liquid useage 
 :-)   In the current instance of liquidator, event handling and 
window refresh have been successfully decoupled  :-)  this means 
I can refresh based on a timer, instead of based on input events... 
 so I can now properly scale interactively of the view based on its 
weight without even removing one event from the view  :-)


you'd say... but we can already do that... well not exactly... yes 
 you can prevent the call to 'show in your mouse handling... but 
can you prevent the whole processing occurence when you are interactivally 
editing an item?  hehe .


because of liquid's lazy computing, the actual processing is delayed 
until needed, and the show will only occur after this.   so I can 
call update 30 times a second, and it will still only call show when 
things have realy changed, inversly, I can change the data 100 times 
a second, and only the real number of calls to update will actually 
cause a data refresh of all dependent data which changed (like the 
draw block :-)
Anton
9-Feb-2007
[101]
Do you mean something similar to this ?
	if data <> old-data [
		update-draw-block
		show window
	]
Maxim
11-Feb-2007
[102]
that is the concept, but liquid will know about any atom of data 
which needs to refresh, and will only recompute what HAS changed, 
so in the example you give, not all draw element will actually get 
refreshed, probably only one or two, and then, the draw block is 
relinked... the smarter you are within the processing (as usually) 
the faster will be the refresh rate.
Maxim
16-Feb-2007
[103]
what is your question Steeve?
Steeve
16-Feb-2007
[104]
here we are
Maxim
16-Feb-2007
[105]
hehe
Steeve
16-Feb-2007
[106]
so m question now
Maxim
16-Feb-2007
[107]
liquid is a type independent engine.
Steeve
16-Feb-2007
[108x2]
wan we connect block of values or only single values
*can
Maxim
16-Feb-2007
[110x3]
each node has a multitude of connectivity options.
and connect several other nodes (plugs) to any node, you can even 
label and separate your connections,
the actual data you transport through the connections (links) is 
arbitrary, and can change at each data change.
Steeve
16-Feb-2007
[113]
hmm ok
Maxim
16-Feb-2007
[114x2]
containers hold the input data, so you can put anything in them...
then the linked nodes, will link to those containers, or other nodes, 
and the processing of each node, will determine what is output from 
the node as source data for another node or as actual processed data.
Steeve
16-Feb-2007
[116x2]
for example, if i have a collection of nodes, each of them, relative 
to a string
all the strings form a rebol script
Maxim
16-Feb-2007
[118]
yes?
Steeve
16-Feb-2007
[119x4]
if i want  manage the insertion or the deletion of one line of my 
source
i have to create myself a nex node or delete it, exact ?
*new node
not nex
Maxim
16-Feb-2007
[123x2]
you create a new node, with the new line of text and link it AT the 
offset which you want , and then just ask the master node for its 
text, and it will give you the new output. (if that is what its processing 
does)
so:

node_a = "a string"      -->	\
				 | node_c.output = "a string of text"
node_b = "of text"        -->	/
Steeve
16-Feb-2007
[125x2]
is see
but if i insert a node between a and b, node c is not informed ?
Maxim
16-Feb-2007
[127x2]
if you then insert node_d after node_a:
node_a = "a string"      -->	\

node_d =" ... "             -->	 |  node_c.output = "a string ... 
of text"
node_b = "of text"        -->	/
its lazy... (unless you tell it not to be)
Steeve
16-Feb-2007
[129]
ok
Maxim
16-Feb-2007
[130]
so node_c KNOWS its not up to date but computes nothing unless you 
need its value.