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

World: r3wp

[Core] Discuss core issues

Henrik
17-Sep-2005
[2032x3]
yes, if it's equivalent of AND, that makes sense
>> all [1 2 3 4 5 false]
== none
>> all [1 2 3 4 5]
== 5
but:

>> 1 and 2 and 3 and 4 and 5
== 0
>> 1 and 2 and 3 and 4 and 5 and false
** Script Error: Expected one of: integer! - not: logic!
** Near: 1 and 2 and 3
Graham
17-Sep-2005
[2035]
well, the behaviour of 'all confuses me.
Henrik
17-Sep-2005
[2036x3]
it doesn't make too much sense as a shortcut AND.... it makes more 
sense to say that it returns a value unless there is a FALSE or NONE 
in the block
if you stick to TRUE and FALSE for ALL and AND, they would be equivalent 
in behaviour. it seems that ALL allows more mixing of the datatypes
could it be that all values are converted to logic! ?

>> to-logic 1
== true
>> to-logic none
== false
>> to-logic false
== false
>> to-logic 2
== true
Graham
17-Sep-2005
[2039]
perhaps we need to make an amendment to the wikibook.
Henrik
17-Sep-2005
[2040]
it seems not:

>> all [1 2 3 false]
== none

>> (to-logic 1) and (to-logic 2) and (to-logic 3) and (to-logic false)
== false
Graham
17-Sep-2005
[2041]
either that, or a RAMBO entry.
Henrik
17-Sep-2005
[2042]
well it seems to behave like AND, it just returns NONE instead of 
FALSE
Graham
17-Sep-2005
[2043]
so, it's not a shortcut
Henrik
17-Sep-2005
[2044x3]
so it's not a true shortcut of AND and would fail if you were testing 
for FALSE
this also doesn't work:

>> (all [1 2 3 false]) and (all [1 2 3 true])
** Script Error: Cannot use and~ on none! value
** Near: (all [1 2 3 false]) and (all [1 2 3 true])
because ALL returns NONE instead of FALSE, since:

>> logic? none
== false
Graham
17-Sep-2005
[2047]
'all is used widely ... in rebol scripts
Henrik
17-Sep-2005
[2048]
so if there were to be a RAMBO entry, it would be because ALL doesn't 
return logic! values. the case would be the same for ANY. But there 
has to be a reason why it's made like this.
Graham
17-Sep-2005
[2049]
yeah, to frustrate newbies
Henrik
17-Sep-2005
[2050x2]
:-) testing with EITHER:

>> either false [1][2]
== 2
>> either true [1][2]
== 1
>> either none [1][2]
== 2

so it doesn't seem to have a reason to return NONE...
a whole lot of things would break if the return value was changed 
from NONE to FALSE. it would be easier to say that ALL is not a really 
true shortcut AND
Graham
17-Sep-2005
[2052]
I suggest we submit a RAMBO and wait to see what Carl says ...
Henrik
17-Sep-2005
[2053]
yep
Graham
17-Sep-2005
[2054x2]
done.
updated the wikibook as well.
Ashley
17-Sep-2005
[2056]
Something related that has always bugged me is to-logic:

	>> to-logic 'false
	== true
	>> to-logic "false"
	== true

of what use then is to-logic?
PeterWood
17-Sep-2005
[2057]
This ?

>> to-logic 1
== true
>> to-logic 0
== false
Gabriele
17-Sep-2005
[2058x4]
>> any [false]
== none
>> select [a 1 b 2] 'c
== none
see the pattern? :-)
i agree the help string should probably be clearer.
PhilB
18-Sep-2005
[2062]
How do send an email and cc a second email address 
I tried this

lv-header: make system/standard/email [
    to: [test1-:-somehost-:-com]
    cc: [test2-:-gmail-:-com]
]


send/header/subject [test1-:-somehost-:-com] "This is a test" lv-header 
"Test Subject"

but the email gets sent to the to address but not the cc address.
Graham
18-Sep-2005
[2063x4]
USAGE:

    SEND address message /only /header header-obj /attach files /subject 
    subj /show

DESCRIPTION:
     Send a message to an address (or block of addresses)
     SEND is a function value.

ARGUMENTS:

     address -- An address or block of addresses (Type: email block)

     message -- Text of message. First line is subject. (Type: any)

REFINEMENTS:
     /only -- Send only one message to multiple addresses
     /header -- Supply your own custom header
         header-obj -- The header to use (Type: object)
     /attach -- Attach file, files, or [.. [filename data]]

         files -- The files to attach to the message (Type: file block)
     /subject -- Set the subject of the message
         subj -- The subject line (Type: any)
     /show -- Show all recipients in the TO field
so, I guess


send/only/header  [    [test1-:-somehost-:-com][test2-:-gmail-:-com] ] "This 
is a test" lv-header "Test Subject"
I don't believe that 'send examines the header for cc and bcc fields.
yeah, it doesn't.  check source send
PhilB
18-Sep-2005
[2067]
So I have to provide all the addresses as the 2nd parameter ... an 
amalgamation of the To: CC: & BCC addresses .....
Graham
18-Sep-2005
[2068x3]
no.
you have to rebuild the header for BCC so that the to: address is 
the BCC: address, and the cc: field is none.
since BCC means blind copy - ie the recipient should not get to see 
the cc fields, and the email should be addressed to them.
PhilB
18-Sep-2005
[2071]
OK .. this seems to work .... thanks graham.
Graham
18-Sep-2005
[2072]
no problems.
Ladislav
19-Sep-2005
[2073x2]
One "poll" question. How many of you are using function with optional 
argument in your scripts and how much would you miss this feature?
Another "poll". What would you say to this:
Pekr
19-Sep-2005
[2075]
what do you mean by function with an "optional argument? do you mean 
refinement?
Ladislav
19-Sep-2005
[2076x2]
+-: :negate
+- 6 ; == -6
+- -6 ; == 6
Function with optional argument: we can say either:
    list-dir %.
or
    list-dir
Pekr
19-Sep-2005
[2078]
Weren't optional arguments problem in rebol? Wasn't it said to compliacte 
it language parser? I can live without them so far ... but ask those 
who code in rebol intensively ...
Henrik
19-Sep-2005
[2079]
I just use refinements, if I want optional arguments... but I rarely 
use them
Geomol
19-Sep-2005
[2080]
Ladislav, I've programmed an UNIX-like cd function with optional 
argument, but that's about it.
Ladislav
19-Sep-2005
[2081]
aha, but you are using it in the console rather than in sripts, aren't 
you?