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

World: r3wp

[!REBOL3 Proposals] For discussion of feature proposals

Ladislav
20-Jan-2011
[795x3]
No, see my article
It is exactly as mutable as the sign of an integer is, when using 
the Negate function
(not at all)
BrianH
20-Jan-2011
[798x2]
Immediate values are a bit iffy concept in REBOL anyways, so it's 
probably for the best that you don't use the notion. Nonetheless, 
there is a documentary typeset in R3 called immediate!, which includes 
the values that are fully stored within a value slot, rather than 
referencing memory elsewhere.
That is what I meant by "immediate values".
Andreas
20-Jan-2011
[800]
Let's move this to !REBOL3, shall we.
BrianH
20-Jan-2011
[801]
Naw, let's let it go :)
BrianH
21-Jan-2011
[802]
Strangely enough, while there is no obvious operator for EQUIV?, 
we could use === for STRICT-EQUIV? and !=== for STRICT-NOT-EQUIV?.
Maxim
21-Jan-2011
[803]
EQUIV?   could be   ~
 its the actual math symbol for it.

http://en.wikipedia.org/wiki/Table_of_mathematical_symbols
BrianH
21-Jan-2011
[804x3]
This would solve the operator problem for developers who understand 
the limits of IEEE754, and still let regular developers expect 0.3 
to equal 0.1 + 0.1 + 0.1.
EQUIV? is more strict than EQUAL?, so it would go the other way around.
We considered ~= in the last round, but that would be even more approximate 
than =, so the hierarchy doesn't work unless ~= means EQUAL?.
BrianH
23-Jan-2011
[807]
Remove ALIAS: http://issue.cc/r3/1835. Thanks, Andreas, for discovering 
the absence of this ticket.
Maxim
27-Jan-2011
[808x2]
proposal for four very usefull series functions....

shorter?: func [a [series!] b [series!]][
	lesser? length? a length? b
]

longer?: func [a [series!] b [series!]][
	greater? length? a length? b
]

sortest: func [a [series!] b [series!]] [
	either shorter? a b  [a][b]
]

longest: func [a [series!] b [series!]] [
	either longer? a b  [a][b]
]
sortest == shortest
Steeve
27-Jan-2011
[810]
Is that so ?
Maxim
27-Jan-2011
[811]
huh?
Steeve
27-Jan-2011
[812]
I mean, usefullness
Henrik
27-Jan-2011
[813]
I'm thinking, what kind of code is it that one writes, when you have 
to compare series lengths?
Maxim
27-Jan-2011
[814x3]
I just used it 10 minutes ago again... checking if two series need 
to be synchronised.
(though they don't use the same values, they are interdependent)
we could also add EQUAL-LENGTH? just for completeness
Henrik
27-Jan-2011
[817]
ok
Maxim
27-Jan-2011
[818x2]
they could just be part of a delayed load series module.  there are 
many missing series handling/probing functions in REBOL.  we end 
up writing them over and over.
remove-duplicates, extract-duplicates, remove-same, prefix?, suffix?, 
etc   the list is long.
Rebolek
27-Jan-2011
[820]
how does remove-duplicates work?
Henrik
27-Jan-2011
[821]
like unique?
Maxim
27-Jan-2011
[822x4]
this implementation is order safe, removing the duplicates from the 
end rather than those in the begining

remove-duplicates: func [
	series
	/local dup item
][
	until [
		item: first series
		if dup: find next series item [remove dup]
		tail? series: next series
	]
	series
]
remove-duplicates, does it in-place
prefix? and suffix? just return true if a series starts with the 
same items in the same order as the second one.  
the second argument is the prefix to compare

so you can easily do:

unless suffix? file-name %.png [append file-name %.png]
the reason these are usefull is that when you chain them within other 
series handlers, you don't need to always add darn ( ) around the 
operators.
Rebolek
27-Jan-2011
[826]
so what's the difference between unique and remove-duplicates ?
Maxim
27-Jan-2011
[827x3]
unique returns a new series.
like all  "set"  handling functions.  (exclude, extract, etc)
I rarely need unique... I often need remove-duplicates.
Steeve
27-Jan-2011
[830]
yeah, it's shame that unique make a new serie.
Rebolek
27-Jan-2011
[831]
I was just curious, because even with new series unique is much faster.
Steeve
27-Jan-2011
[832]
faster, but not GC safe
Maxim
27-Jan-2011
[833]
its a shame that all "set" functions make new series.  we could just 
easily copy before calling unique:
new: unique copy serie
Steeve
27-Jan-2011
[834]
Agreed 100%
Maxim
27-Jan-2011
[835x2]
though there is a lot of memory overhead for large series, I'd rather 
have a refinement on all sets probably   /only  or something similar, 
to have them work "in-place"


come to think about it, maybe we could make a CC wish for this, seems 
like its been a topic of discussion for years, and pretty much eveyone 
agrees that both versions are usefull.
SWAP is another interesting one... takes two series and swaps their 
content, in-place.
Steeve
27-Jan-2011
[837]
I don't see your point with SWAP
Maxim
27-Jan-2011
[838x7]
INTERLEAVE is a very usefull function, using two series and mixing 
them up with many options like counts, skip, duplicates, all cooperating.
SWAP is interesting, though not as usefull... I don't remember when 
I used it.  ;-0
(that was supposed to be :-P)
anyway, I really think that we should accumulate all of the series 
functions we are using (even the more obscure ones) and make a big 
standard series handler module in R3.  it helps people who are learning 
REBOL since they don't have to figure out as much how to build these 
(somethimes non-obvious to implement) funcs.
this module could even be an internal delayed load extension... which 
can include some functions in C and others in REBOL mezz within the 
extension's module.
steeve, I think I was using SWAP for some sort of sorting using the 
/part refinement.
hehe I just discovered that SWAP is already part of R2 and R3   :-)