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

World: r3wp

[Core] Discuss core issues

Guest
8-Feb-2005
[419x2]
wow, fast reply. thx sunanda. last question: what syntax I need to 
access e.g.  object array no. 5 or 8  to write values like  blk/a: 
recordset ?
I have a object with - name, street, and country and a database with 
50 records. I would like to store the records into a dynamic object 
array for later reading...
Anton
8-Feb-2005
[421x3]
equivalent to above, but a bit faster in execution (maybe you have 
a large block):
blk: make block! 10

loop 10 [insert tail blk make object! [name: copy "<name>"]] ; COPY 
so all objects don't share the same string
objects: copy []
person: context [name: copy "<name>" address: copy "<address>"]

get-record-item: func [n field][copy ""] ; <--- you have to make 
this function look into the database

repeat n 50 [append objects make person [name: get-record-item n 
'name address: get-record-item n 'address]]
Guest
8-Feb-2005
[424x2]
thank you anton. this is the code I was looking for :-))
oups, how do I read (after appending) record no. 45 ?   person/name 
 (45) ?
Anton
8-Feb-2005
[426x3]
objects/45/name
record-num: 45
objects/:record-num/name
;== "aristotle"
That is putting a GET-WORD! in the path. (eg.  :record-num   )
Guest
8-Feb-2005
[429]
yes, that's it ! running smoth and fast... thank you very much anton.
Anton
8-Feb-2005
[430]
no problem at all.
JaimeVargas
14-Feb-2005
[431x5]
;Isn't this a bug?
>> parse #{000102} [#"^@" #"^A" #"^B"]
== false
>> parse #{000102} ["^@^A^B"]             
== true
>> parse #{000102} [#"^@" #"^A" #"^B"]
== false
>> parse #{000102} ["^@^A^B"]
== true
I think AltMe is escaping some characters... I hope you guys can 
copy it and see the actual problem.
;The problem doesn't seem to exist for printable chars.
>> parse #{313233} [#"1" #"2" #"3"]
== true
>> parse #{313233} ["123"]
== true
;Ah. Never mind I forgot about parse/all
>> parse/all #{000102} [#"^@" #"^A" #"^B"]
== true
Ladislav
16-Feb-2005
[436x2]
is there a way how to "simplify" this? (queue is a list!)

	if any [error? try [tail? queue] tail? queue] [

  queue: head queue ; start at a "meaningful" position in the queue
	]
(I would say it is an implementation quirk)
Dockimbel
16-Feb-2005
[438]
If queue is a list!, why would [tail? queue] fail ? Can 'queue refer 
to other kind of value than a list! value ?
Chris
16-Feb-2005
[439]
all [series? queue tail? queue queue: head queue]
Ladislav
16-Feb-2005
[440]
>> queue: make list! [1 2]
== make list! [1 2]
>> remove queue
== make list! [2]
>> tail? queue
** Script Error: Out of range or past end
** Near: tail? queue
Chris
16-Feb-2005
[441x4]
all [attempt [tail? queue] queue: head queue]
But looks like there are greater problems...
queue: remove queue -- would fix it too...
>> queue: make list! [1 2]
== make list! [1 2]
>> queue: remove queue
== make list! [2]
>> all [tail? queue queue: head queue]
== none
Ladislav
17-Feb-2005
[445]
the last one seems to be the best
Louis
22-Feb-2005
[446]
Is there a command to give the path to the presently used user.r 
file?
Anton
22-Feb-2005
[447]
One of these will probably help you:
>> system/options/path
== %/D/Anton/Dev/Rebol/View/
>> system/options/home
== %/D/Anton/Dev/Rebol/View/
>> system/options/boot
== %/D/Anton/Dev/Rebol/View/rebview1257031e.exe
Louis
22-Feb-2005
[448x3]
Thanks, Anton.  Rebol seems to be looking for user.r in system/options/home 
or system/options/path.  It would seem to be more practical for it 
to look in system/options/boot.
But I guess each directory might need a different user.r.
I trying to get set up to use your dir-utils.r.  Thanks for your 
good work on this.
Anton
22-Feb-2005
[451]
Louis, I think: 

system/options/path  is the current directory of the shell environment 
where rebol was started from.

system/options/home  is the rebol starting directory, where it looks 
for user.r etc. In WinXP this value is taken from the registry at 
HKCU\Software\Rebol\View\HOME, but only for full release versions 
(like Rebol/View 1.2.1.3.1). I imagine there is a HOME environment 
var set in *nix.
DideC
22-Feb-2005
[452]
REBOL_HOME afaik
Geomol
23-Feb-2005
[453]
Does REBOL miss a way to go up one level of blocks within blocks? 
Example:

>> blk: [[a b c] [d e f]]
== [[a b c] [d e f]]
>> p: first blk
== [a b c]


Now I would like to have p go up one level, so I can continue to 
the next block (the [d e f] block) within blk. Using blk to do it 
is not a solution, because we could have blocks within blocks within 
blocks ... to any level. What about a parent function like:

>> p: parent p
DideC
23-Feb-2005
[454]
It require bidirectinnal pointer:
- parent -> child (we have that : parent/child-index)
- child -> parent (we DON'T have that !)
You have to hold the reference yourself.
Volker
23-Feb-2005
[455]
you can put the same block in two others, which one is parent?
Sunanda
23-Feb-2005
[456]
Not really possible without an extra data structure.
Why not simply make the parent the 1st entry in the block?
>> blk: copy []
== []
>> append/only blk blk
== [[...]]
>> append blk "a"
== [[...] "a"]


(One drawback is that this sort of recursive structure cannoy easily 
be molded and later loaded_
>>
DideC
23-Feb-2005
[457]
Use a block and Push reference to the parent when you go into the 
child. Then Pop the reference when you want to go up one level.
Geomol
23-Feb-2005
[458]
Volker is right! Which one is the parent? Ergo we can't have a parent 
function. And then again, we have to use a trick, where we store 
the block at any level. (You other guys are right too, and I think 
the actual design is the best way, I just have to keep in mind, why 
it is like this.) :-)
Chris
23-Feb-2005
[459]
DideC, do you have an example?  I've seen the terms 'push and 'pop 
before, but have not seen a comprehensive example of it...
DideC
23-Feb-2005
[460]
There was a discussion about stack implementation the 27-jan in this 
group. Go up, there is the code from Robert and others
Chris
23-Feb-2005
[461]
Thanks, missed that...
Geomol
23-Feb-2005
[462x3]
I find this a bit strange and problematic:

>> blk: [/]
== [/]
>> type? blk/1
== word!
>> parse blk [/]
== false

How do I parse a slash within a block?
Answer: parse [/] [set w word!]

Sorry to bother you. ;-)
Well, I'm not 100% satisfied. Look at these:

>> parse [a] ['a]
== true
>> parse [/] ['/]
** Syntax Error: Invalid word-lit -- '
** Near: (line 1) parse [/] ['/]

Shouldn't '/ be a valid lit-word?
Pekr
23-Feb-2005
[465]
imo Rebol is so free form, that you imo can find lot of such inconsistencies 
here ...
Chris
23-Feb-2005
[466]
>> slash: to-lit-word "/"
== '/
>> parse [/] [slash]
== true
Geomol
23-Feb-2005
[467]
Thank you very much! :-)
Anton
23-Feb-2005
[468]
Careful, by default:
>> slash
== #"/"