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

World: r3wp

[Core] Discuss core issues

[unknown: 5]
21-Feb-2009
[12478]
That is what doesn't make sense to me.
Janko
21-Feb-2009
[12479x2]
yes, I get this delete example :) good point ,... I would have to 
look in what manner I used blocks with "random" words (if I did) 
to see what could happen..  I did some when I was playing with dialects.. 
and to store data in [ key "value" ]  manner
is make-two a function ? it is but when you write it it gets evaled 
to 2 and if you write >>function? make-two<< you get false , same 
here it is but it get's evaled to word
[unknown: 5]
21-Feb-2009
[12481x2]
But 'test is a value - not a function.  It is the end value as I 
call it.  In other words it doesn't evaluate.
words can evalute but lit words don't.
Rebolek
21-Feb-2009
[12483]
no, lit words evaluate to words
[unknown: 5]
21-Feb-2009
[12484x4]
I know it does which is why I believe that is inconsistent.
I currently get this:

type? 'test
==word!

I think it would be more consistent to get this:

type? 'test
==lit-word!
Consider this link by Brett:

http://www.codeconscious.com/rebol/articles/rebol-concepts.html

It says the following:

'age

This textual form is recognised in rebol as the lit-word! datatype.
See that isn't entirely true - only half true.  Consider:

>> lit-word? 'age
== false
Rebolek
21-Feb-2009
[12488]
But this is purpose of lit-word! With your behaviour,
>> reduce ['a] ; would return
== ['a]
[unknown: 5]
21-Feb-2009
[12489x3]
But that makes sense to me.
That is why I say that it is only half true to say that it evaluates 
to a lit-word.
It does sometimes but not all the time.
Rebolek
21-Feb-2009
[12492x2]
No, it evaluates to word!, not lit-word!
Always
[unknown: 5]
21-Feb-2009
[12494]
To me that is the inconsistency.
Rebolek
21-Feb-2009
[12495]
Paul, with your behaviour, how would you write this code?:

>> a: 3
== 3
>> reduce ['a a]
== [a 3]
[unknown: 5]
21-Feb-2009
[12496x2]
to me it should be ['a 3]
But I know that  breaks how REBOL works.
Janko
21-Feb-2009
[12498]
but then 'a would be very similar to just string "a" in behaviour... 
don't lit words exist exactly for the behaviour that they have?
[unknown: 5]
21-Feb-2009
[12499x2]
And REBOL does see 'test as a lit-word.  A trace shows this:

>> string? 'test
Trace:  string? (word)
Trace:  'test (lit-word)
Result: false (logic)
== false
Yes Janko, it would be intended in that behavior which again is why 
it would break how REBOL works.
Izkata
21-Feb-2009
[12501]
Does this help?  X contains the code you see and type, the lit-word! 
typed in.  It gets reduced to its word value..
>> X: [type? 'one]
== [type? 'one]
>> type? X/2
== lit-word!
>> do X
== word!
[unknown: 5]
21-Feb-2009
[12502x6]
I'm not arguing about how lit-words are used.  I'm arguing about 
how lit-word? detects lit-word.
The rest is understood that it should work they way it should be 
cause of the manner of words in REBOL.  But the function of lit-word? 
is what to me seems inconsistent.
I understand all of that IzKata.  I have been using REBOL since 1998 
now.
That part has remained pretty much the same.
My argument lies specifically with the lit-word? function.
What is wrong in having lit-word? return True in this case:

lit-word? 'test
==true
Janko
21-Feb-2009
[12508]
but argument to lit-word? in your case is not lit word , it can't 
return true vithout magic 

>> 'test
== test (this is what lit-word? recieves in)
[unknown: 5]
21-Feb-2009
[12509x2]
Yes it is Janko, a TRACE shows that my argument  is a lit-word.
If you were correct Janko then how would Trace know to classify my 
argument as a lit-word?
Janko
21-Feb-2009
[12511]
how do you make this trace (I never used it, and also don't understand 
what exactly it shows)
Izkata
21-Feb-2009
[12512x2]
Trace shows what the rebol interpreter first finds, not what a datatype 
evaluates to:
>> type? 'test
Trace:  type? (word)
Trace:  'test (lit-word)
Result: (datatype)
== word!
Janko:
>> trace on
Result: (unset)
>> 'test
Trace:  'test (lit-word)
== test
[unknown: 5]
21-Feb-2009
[12514]
Yes Izkata, it finds that 'test is a lit-word.
Izkata
21-Feb-2009
[12515x2]
And the interpreter converts it to a word! before passing it to 'lit-word?
so lit-word? never sees a lit-word!
[unknown: 5]
21-Feb-2009
[12517x3]
Yes, I understand that.  But that is not what it was given.
Again, I'm saying what is wrong with having the lit-word? function 
return true for a lit-word value?
Obviously the interpreter can see that it is a lit-word value even 
BEFORE it calls it a word! value.
Izkata
21-Feb-2009
[12520]
But it does:
>> X: ['Test]   
== ['Test]
>> lit-word? X/1
== true
[unknown: 5]
21-Feb-2009
[12521x2]
Yes, I know Izkata in that case but that  is not consistent with 
this one:

lit-word? 'test
==false
Nobody is answering my question though - what is wrong with having 
lit-word? return true in the case above?
Izkata
21-Feb-2009
[12523x2]
Because it never sees an actual lit-word! - all the other (datatype)? 
functions do.
never actually sees*
[unknown: 5]
21-Feb-2009
[12525x2]
Trace shows that it does see it as a lit-word
>> 'test
Trace:  'test (lit-word)
== test
Izkata
21-Feb-2009
[12527]
Trace shows that the interpreter - not the lit-word? function - sees 
a lit-word before it gets evaluated