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

World: r3wp

[Core] Discuss core issues

Geomol
16-Aug-2005
[1657x6]
cd: func ['dir [file! word! path!] ][change-dir dirize to-file dir]

NOW it's possible.
Question to myself: Why didn't I just write:
cd: func ['dir][change-dir dirize to-file dir]


There are many ways to write almost the same thing in REBOL with 
differenct side-effects. Good or bad!? I'm not sure, but it's fun! 
:-)
Another version, that will get to back to system/options/path, if 
'cd' has no argument:


cd: func ['dir [any-type!][either value? 'dir [change-dir dirize 
to-file dir][change-dir system/options/path]]
get to
 = "get you"
I put REBOL versions of many often used UNIX commands in a "unix.r" 
script, that I put in my rebol/view directory, so I can easily get 
to them, when I have to use the REBOL prompt. Just an idea for others.
An easy one:

pwd: :what-dir
Anton
17-Aug-2005
[1663]
There's also the group "*nix-sh" for discussing this.
Geomol
17-Aug-2005
[1664]
Thanks!
Graham
18-Aug-2005
[1665]
*nix-sh is a private group ...
Anton
18-Aug-2005
[1666]
Any reason why I shouldn't make it public ?
Volker
18-Aug-2005
[1667]
IS there something terrible in it which annois some people, like 
hard religion or something? Else i see none.
Anton
18-Aug-2005
[1668]
ok now it's public.
JaimeVargas
19-Aug-2005
[1669]
How can I read any char from stdin?
Volker
19-Aug-2005
[1670x2]
system/console/input. if you need chars, not lines, set it to binary 
IIRC.
or [lines: false]? something like that.
Anton
19-Aug-2005
[1672]
using SET-MODES I think
Henrik
21-Aug-2005
[1673]
Suggestion: ATTEMPT offers no possibility to provide a default value 
in case of failure. How about:

attempt/failure [2 / 0] "Invalid!"
== "Invalid!"

attempt [2 / 0]
== none

default-values: [a b c]

values: copy attempt/failure [read %values-file] default-values

2% more elegance? Or a debugging trap?
Volker
21-Aug-2005
[1674]
inbuild:
values: copy any[attempt [read %values-file] default-values]
Ladislav has something like your suggestion, called 'default.
Henrik
21-Aug-2005
[1675]
not as clear, but I resorted to this when wanting to read out 0 when 
a numeric computation that is always positive failed:


first maximum-of reduce [0 attempt [2 / 0]] ; what's going on? .... 
oh :-)

attempt/default [2 / 0] 0 ; seems more clear
Volker
21-Aug-2005
[1676x2]
He did not patch attempt, its own. so
 default [ 2 / 0 ] 0  ; IIRC
default [read %values-file] "This file missing"
Henrik
21-Aug-2005
[1678]
found it in RAMBO #3225...
Volker
21-Aug-2005
[1679x3]
one version is here, with explicit error-variable: http://www.fm.vslib.cz/~ladislav/rebol/default.r
- ah, you too.
interesting, i googled for "ladislav default", no "rebol" in it, 
42k hist, this one #4 :)
hist -> hits
Henrik
21-Aug-2005
[1682]
google thinks rambo is a movie character. how quaint!
Volker
21-Aug-2005
[1683x3]
But always in the center of the action?
But why would an actor call himself after a broker?!
ups, no, rambo, not rugby. bug-squasher then.
Henrik
21-Aug-2005
[1686]
Rebol will have sufficient fame when Stallone sues over the RAMBO 
name.
Volker
21-Aug-2005
[1687]
Maybe they join, the next RAMBO is about entering some bad computer 
and sqush all the bugmonsters there?
Robert
21-Aug-2005
[1688]
Does read/skip work in the new releases?
Anton
21-Aug-2005
[1689]
Doesn't look like it. I think file skip was removed because of moving 
to new Windows api.
Pekr
21-Aug-2005
[1690]
When will open/seek be added? It was supposed to be there with new 
async core, we had async core for a while, but I do not remember 
anyone mentioning open/seek is there ...
Anton
21-Aug-2005
[1691x3]
you mean  "file seek"   or  "open/skip".
It was in the experimental releases, like View 1.2.57.3.1
Test with a line like:
	print copy/part read/skip %user.r 10 40    ;   compare 10 with 0
Now, how to add a link without killing the Korean language UTF-8...
Ladislav
21-Aug-2005
[1694x4]
Re DEFAULT. It looks, that a version with implicit variable may be 
more popular:

default: func [
    {Execute code. If error occurs, execute fault.}
    [throw]
    code [block!] {Code to execute}
    fault [block!] {Error handler}
] [
    either error? set/any 'code try code [
        fault: make function! [[throw] error [error!]] fault
		fault code
    ] [get/any 'code]
]
this one uses 'error as the error variable
note: although it looks safe, it may become a victim of the GC bug 
I described in RAMBO group recently. A slower but safer implementation 
is:

default: func [
    {Execute code. If error occurs, execute fault.}
    [throw]
    code [block!] {Code to execute}
    fault [block!] {Error handler}
] [
    either error? set/any 'code try code [
        do make function! [[throw] error [error!]] fault
    ] [get/any 'code]
]
sorry, correction:

default: func [
    {Execute code. If error occurs, execute fault.}
    [throw]
    code [block!] {Code to execute}
    fault [block!] {Error handler}
] [
    either error? set/any 'code try code [
        do make function! [[throw] error [error!]] fault code
    ] [get/any 'code]
]
Volker
21-Aug-2005
[1698]
gc-bug: i prefer the function which overwrites itself cares about 
that, else a lot code will be bloated. caring means plug somewhere 
reachable from global context, like dont-gc-me: :me
Ladislav
21-Aug-2005
[1699x2]
the above code is exactly the case where your suggestion cannot help
moreover, it is more bloated, than the actual solution used
Volker
21-Aug-2005
[1701]
yes, could not get me own function there. but would not reload myself 
by 'default then.
Ladislav
21-Aug-2005
[1702]
sorry, I don't understand the last post?
Volker
21-Aug-2005
[1703]
i would not use default when i know i would trigger the gc-bug.
Ladislav
21-Aug-2005
[1704]
the last version will not trigger it
Volker
21-Aug-2005
[1705x2]
the only time i trap about that bug is when i do a script i did before, 
thus overwriting the loading function.
and in that case i prefer to care mayelf isntead of forcing every 
tool to be aware of it.