World: r3wp
[Core] Discuss core issues
older newer | first last |
[unknown: 5] 21-Feb-2009 [12482] | 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 [12527x2] | Trace shows that the interpreter - not the lit-word? function - sees a lit-word before it gets evaluated |
not after | |
[unknown: 5] 21-Feb-2009 [12529x2] | Exactly!!! So why don't we modify lit-word? function so that it can say true when it sees it? |
See if I asked someone to tell me what type this is: 'test They would most likely respond a lit-word. So shouldn't the lit-word? function say the same? I say it should. | |
Izkata 21-Feb-2009 [12531] | Rebol, the interpreter, sees a lit-word!. Trace shows this. It *then* evaluates it to a word!, *then* passes it to lit-word?, and lit-word? never sees the original lit-word! |
older newer | first last |