CORE 2.5.2 Bugs/Enhancements
[1/8] from: fsievert::uos::de at: 7-May-2002 8:42
Hi!
I tested core 2.5.2 right now and like most of the changes you did, thank
you!
Here is a list of things i still found:
--- New Evaluation ---
Evalutation is still not very constistent. Maybe you could
have a look at
http://www.fx5.de/REBOL/hot-values.r
(The comments refer to Core 2.5.0, so ignore them)
For example:
>> a: first ['a]
== 'a
>> a
== a
I would expect == 'a , do you agree?
--- Crashing: Foreach/Reduce/Do/next ---
And there are still some crashes in REBOL which causes crashes, when REBOL
runs bigger scripts for longer time. You can try
do http://proton.cl-ki.uni-osnabrueck.de/REBOL/bug-test.r
to find them. test2 ... test4 will crash REBOL.
--- Bind/In ---
Maybe you could allow bind to accept not only word - Values, but lit-word,
set-word, too. This already works, but the definition of Bind does not
allow it.
--> use [a] [a: third :bind repend a/words [any-word!]]
In
should allow any-word!, too.
--> use [a] [a: third :in repend a/word [any-word!]]
Enhancement-Request: In should allow to get a word bound not only to
objects, but to functions, too. Example:
a: func [b] [b: 99]
get in :a 'b
--- Use/Repeat ---
Maybe you will want use to copy/deep it's block argument before binding it
(needed for recursive functions)
--- FTP Protocol ---
FTP-Protocol is broken, it opens a new connection for each access when
using ip-addresses. Fix:
use [a] [
a: second get in system/schemes/ftp/handler 'open
a: next a/connections/all
change/only a to-paren compose [form (first a)]
]
--- throw-on-error ---
Throw on error is not able to handle unset-Return-Value. Fix:
throw-on-error: func [
[throw]
blk [block!]
][
if error? set/any 'blk try blk [throw :blk]
get/any 'blk
]
[2/8] from: lmecir:mbox:vol:cz at: 7-May-2002 11:26
Hi Frank,
I second to this. It looks that you forgot to append
first [a:]
to the examples.
----- Original Message -----
From: "Frank Sievertsen" <[fsievert--uos--de]>
To: <[feedback--rebol--com]>
Cc: <[rebol-list--rebol--com]>
Sent: Tuesday, May 07, 2002 8:42 AM
Subject: [REBOL] CORE 2.5.2 Bugs/Enhancements
Hi!
I tested core 2.5.2 right now and like most of the changes you did, thank
you!
Here is a list of things i still found:
--- New Evaluation ---
Evalutation is still not very constistent. Maybe you could
have a look at
http://www.fx5.de/REBOL/hot-values.r
(The comments refer to Core 2.5.0, so ignore them)
For example:
>> a: first ['a]
== 'a
>> a
== a
I would expect == 'a , do you agree?
--- Crashing: Foreach/Reduce/Do/next ---
And there are still some crashes in REBOL which causes crashes, when REBOL
runs bigger scripts for longer time. You can try
do http://proton.cl-ki.uni-osnabrueck.de/REBOL/bug-test.r
to find them. test2 ... test4 will crash REBOL.
--- Bind/In ---
Maybe you could allow bind to accept not only word - Values, but lit-word,
set-word, too. This already works, but the definition of Bind does not
allow it.
--> use [a] [a: third :bind repend a/words [any-word!]]
In
should allow any-word!, too.
--> use [a] [a: third :in repend a/word [any-word!]]
Enhancement-Request: In should allow to get a word bound not only to
objects, but to functions, too. Example:
a: func [b] [b: 99]
get in :a 'b
--- Use/Repeat ---
Maybe you will want use to copy/deep it's block argument before binding it
(needed for recursive functions)
--- FTP Protocol ---
FTP-Protocol is broken, it opens a new connection for each access when
using ip-addresses. Fix:
use [a] [
a: second get in system/schemes/ftp/handler 'open
a: next a/connections/all
change/only a to-paren compose [form (first a)]
]
--- throw-on-error ---
Throw on error is not able to handle unset-Return-Value. Fix:
throw-on-error: func [
[throw]
blk [block!]
][
if error? set/any 'blk try blk [throw :blk]
get/any 'blk
]
[3/8] from: lmecir:mbox:vol:cz at: 7-May-2002 11:35
BTW, your error! result looks arguable to me.
----- Original Message -----
From: "Frank Sievertsen" <[fsievert--uos--de]>
To: <[feedback--rebol--com]>
Cc: <[rebol-list--rebol--com]>
Sent: Tuesday, May 07, 2002 8:42 AM
Subject: [REBOL] CORE 2.5.2 Bugs/Enhancements
Hi!
I tested core 2.5.2 right now and like most of the changes you did, thank
you!
Here is a list of things i still found:
--- New Evaluation ---
Evalutation is still not very constistent. Maybe you could
have a look at
http://www.fx5.de/REBOL/hot-values.r
(The comments refer to Core 2.5.0, so ignore them)
For example:
>> a: first ['a]
== 'a
>> a
== a
I would expect == 'a , do you agree?
--- Crashing: Foreach/Reduce/Do/next ---
And there are still some crashes in REBOL which causes crashes, when REBOL
runs bigger scripts for longer time. You can try
do http://proton.cl-ki.uni-osnabrueck.de/REBOL/bug-test.r
to find them. test2 ... test4 will crash REBOL.
--- Bind/In ---
Maybe you could allow bind to accept not only word - Values, but lit-word,
set-word, too. This already works, but the definition of Bind does not
allow it.
--> use [a] [a: third :bind repend a/words [any-word!]]
In
should allow any-word!, too.
--> use [a] [a: third :in repend a/word [any-word!]]
Enhancement-Request: In should allow to get a word bound not only to
objects, but to functions, too. Example:
a: func [b] [b: 99]
get in :a 'b
--- Use/Repeat ---
Maybe you will want use to copy/deep it's block argument before binding it
(needed for recursive functions)
--- FTP Protocol ---
FTP-Protocol is broken, it opens a new connection for each access when
using ip-addresses. Fix:
use [a] [
a: second get in system/schemes/ftp/handler 'open
a: next a/connections/all
change/only a to-paren compose [form (first a)]
]
--- throw-on-error ---
Throw on error is not able to handle unset-Return-Value. Fix:
throw-on-error: func [
[throw]
blk [block!]
][
if error? set/any 'blk try blk [throw :blk]
get/any 'blk
]
[4/8] from: fsievert:uos at: 7-May-2002 14:40
On Tue, 7 May 2002, Ladislav Mecir wrote:
> BTW, your error! result looks arguable to me.
The error! result is ehhh... an error :)
[5/8] from: rotenca:telvia:it at: 7-May-2002 15:04
Hi,
> --> use [a] [a: third :bind repend a/words [any-word!]]
Interesting, it works also in current version, but more interesting:
use [a] [a: third :bind
repend a/words [any-word!]
change a/known-word reduce [any-word!]
]
b: 2 o: context [a: 1 b: 1 ]
probe get bind 'b first bind [:a] in o 'a
probe get bind 'b first bind [a:] in o 'a
probe get bind 'b first bind ['a] in o 'a
Eureka!
---
Ciao
Romano
[6/8] from: lmecir:mbox:vol:cz at: 8-May-2002 15:05
It is incredible, how easily can Rebol be enhanced sometimes :-) Frank,
thanks for the idea and Romano, thanks for the generalization. Romano, you
should send it to feedback.
-L
----- Original Message -----
From: "Romano Paolo Tenca"
Hi,
> --> use [a] [a: third :bind repend a/words [any-word!]]
Interesting, it works also in current version, but more interesting:
use [a] [a: third :bind
repend a/words [any-word!]
change a/known-word reduce [any-word!]
]
b: 2 o: context [a: 1 b: 1 ]
probe get bind 'b first bind [:a] in o 'a
probe get bind 'b first bind [a:] in o 'a
probe get bind 'b first bind ['a] in o 'a
Eureka!
---
Ciao
Romano
[7/8] from: rotenca:telvia:it at: 8-May-2002 21:24
Hi Ladislav,
> It is incredible, how easily can Rebol be enhanced sometimes :-) Frank,
> thanks for the idea and Romano, thanks for the generalization. Romano, you
> should send it to feedback.
Yes.
Your tricks with function attributes and errors had to make me think: third of
function is not only an ornamental addition but an active part of the native
code.
In the meanwhile i've written two slow but "safe" (i hope) workarounds (bugs
appreciated):
bindall: func [
"Binds words to a specified context."
words [block! any-word!] "A block of words or single word."
known-word [any-word!] "A sample word from the target context."
/copy "Deep copies block before binding it."
/local t res
][
t: third :bind
change t/words reduce [block! any-word!]
change t/known-word reduce [any-word!]
res: either copy [bind/copy :words :known-word][bind :words :known-word]
change t/words reduce [block! word!]
change t/known-word reduce [word!]
:res
]
inall: func [
"Returns the word in the object's context."
object [object!]
word [any-word!]
/local t res
][
t: third :in
change t/word reduce [any-word!]
res: in object :word
change t/word reduce [word!]
:res
]
---
Ciao
Romano
[8/8] from: lmecir:mbox:vol:cz at: 12-May-2002 10:54
The APPEND function should be enhanced to allow the same types of
arguments/refinements as INSERT does.
append: function [
{Appends a value to the tail of a series and returns the series.}
[catch]
series [series! port! bitset!] "Series at point to insert"
value [any-type!] "The value to insert"
/part "Limits to a given length or position."
range [number! series! port!]
/only "Inserts a series as a series."
/dup "Duplicates the insert a specified number of times."
count [number!]
] [path block] [
path: to path! [insert]
block: reduce [:path 'tail :series]
insert/only tail block get/any 'value
if part [
insert tail path 'part
insert/only tail block :range
]
if only [
insert tail path 'only
insert tail block :range
]
if dup [
insert tail path 'dup
insert tail block :count
]
throw-on-error block
:series
]
The CHANGE function should be enhanced too, to allow ANY-TYPE! VALUE
argument.
-L