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

World: r3wp

[Core] Discuss core issues

Gabriele
20-Sep-2010
[18310]
:-) it would be nice to write a proper, complete compiler (including 
optimization etc.). your script may be already be close enough?
Ladislav
20-Sep-2010
[18311x4]
I hope it is simpler to start with, since it uses USE-RULE ;-)
...and it already describes more variants, so it shows how one can 
adjust it
nevertheless, it was originally meant as a "teaching code", so I 
do not claim completeness, or fitness for other purposes
But, as Gregg mentioned, I think that one of its advantages is that 
it shows how to implement different priority/associativity rule sets
DideC
20-Sep-2010
[18315]
Thanks to all for your "path related" thought..
Maxim
20-Sep-2010
[18316]
Anton... did you CC your idea of lit word in paths?
Anton
20-Sep-2010
[18317]
Maxim, yes.  [now I can sleep].
Maxim
20-Sep-2010
[18318]
;-)
Geomol
21-Sep-2010
[18319x3]
Something to consider:

blk/'a/b
is a valid path today:

>> blk: ['a [b 0]]
>> blk/'a/b
== 0


If ' is made to be an escape, when followed by an integer, then it 
might be a bit confusing. On the other hand, I see lit-paren! as 
an usable new datatype, and in that case, it's kinda like an escape, 
when used in path notation. Something like:

>> blk [(a b) 0]
>> blk/'(a b)

which isn't valid today.
It should have been with a colon:
>> blk: [(a b) 0]
Remember you can always do:

>> blk: [1 a 2 b]
== [1 a 2 b]
>> second find blk 2
== b

But of course that's way more than just writing: blk/'2
Maxim
21-Sep-2010
[18322x2]
why do you say blk/'1/is confusing?  it means use the integer litterally, 
not as an index.
or should I say, not as an ordinal index
Geomol
21-Sep-2010
[18324x5]
It can be a bit confusing, because blk/'a mean: search for lit-word 
'a in blk. So I would guess, blk/'1 mean: search for lit-integer 
'1 in blk. That would be my initial though, when I saw this the first 
time.
*thought*
Or not lit-integer, but lit-word '1 (assuming '1 would be a valid 
lit-word).
When reconsidering all this again, I would like to question, how 
blk/'a works today. Why not evaluate 'a to a? Parens are evaluated 
in paths:

>> blk: [1 a 2 b]
== [1 a 2 b]
>> blk/(1 + 1)
== a
The reason, I would expect  'a to be evaluated in a path, is because 
it is when standing alone:

>> type? 'a
== word!

Like parens are:

>> (1 + 1)
== 2


It can be argued, that different behaviour, when used in a path, 
is a bad thing.
Ladislav
21-Sep-2010
[18329]
Geomol:

>> blk: [(a b) 0]
== [(a b) 0]

>> blk/(quote (a b))
== 0
Geomol
21-Sep-2010
[18330]
:-) Yeah, you've pointed me to QUOTE several times in the past. I 
haven't learned to use it yet though.
Ladislav
21-Sep-2010
[18331]
:-D
Geomol
21-Sep-2010
[18332]
My argument is the same as (I think) with e.g. Anton's proporsal 
for ' as escape in path: We like to write less to achieve things.
Ladislav
21-Sep-2010
[18333x2]
There has to be a limit somewhere
(how would you search for lit-parens, etc?)
Geomol
21-Sep-2010
[18335]
Using quote maybe? ;)
Ladislav
21-Sep-2010
[18336]
Not to mention, that it is illogical to have lit-parens, since we 
already have them. They are named blocks ;-)
Geomol
21-Sep-2010
[18337]
:) Well, we can also today do something like:

>> blk: reduce [1 'a to lit-word! "2" 'b]
== [1 a '2 b]
>> blk/(to lit-word! "2")
== b

But I will consider such for rubbish.
Ladislav
21-Sep-2010
[18338]
>> to lit-word! "2"
** Syntax error: invalid character in: "2"
** Where: to
** Near: to lit-word! "2"
Geomol
21-Sep-2010
[18339x2]
I'm using R2 core as "always" in this group.
The goal when constructing new languages must be to find the best 
simple ground rules and stick with them. Then new programmers don't 
have to learn all kinds of side-rules and "unless" behaviour.
Ladislav
21-Sep-2010
[18341]
I do agree with you, and introducing new quoted datatypes you would 
introduce too many such side rules into the language, which I disagree 
with.
Geomol
21-Sep-2010
[18342]
Not to mention, that it is illogical to have lit-parens, since we 
already have them. They are named blocks

Hm, then I would expect this path notation to work:

>> blk: [[a b] 0]
== [[a b] 0]
>> blk/[a b]
** Syntax Error: Invalid path -- blk/

Same in R3.
Ladislav
21-Sep-2010
[18343]
Yes, it simply does not work, the funny thing about it is, that this 
does:

>> blk: [[a b] 0]
== [[a b] 0]

>> blk/([a b])
== 0
Geomol
21-Sep-2010
[18344]
wow!
Gabriele
21-Sep-2010
[18345]
>> p: to path! [blk [a b]]
== blk/[a b]
>> do p
== 0
Geomol
21-Sep-2010
[18346]
wow wow!
Ladislav
21-Sep-2010
[18347]
So, it is a problem of the language parser, which does not accept 
some data, that the interpreter can process
Geomol
21-Sep-2010
[18348]
Right!
Maxim
21-Sep-2010
[18349x2]
you guys didn't solve the "how do we use an integer as a key instead 
of an index"


this is a GAPING hole in path evaluation.  using integers isn't some 
fancy side datatype.


we are not adding a new datatype, its not a complex system like using 
parens (which is also very slow) and it doesn't require advanced 
binding tricks.
also geomol, PLEASE don't suggest to auto-downgrade lit-words to 
words... it prevents us from using lit-words as browsable components.
Gregg
21-Sep-2010
[18351]
I wouldn't call it a gaping hole, I would call it "the intended design". 
:-)
Maxim
21-Sep-2010
[18352]
well...  can I not agree with the design, cause "there's a GAPING 
hole in the design"  ;-)
Ladislav
21-Sep-2010
[18353]
you guys didn't solve the "how do we use an integer as a key instead 
of an index" - you *can* use integer as a key without using it as 
an index, if you like. Nevertheless, the path-access does not work 
like that. You should either get used to it, or use a different access 
method, that is all. Anyway, you have got no right to call it a "GAPING 
hole in the path evaluation", taking into account, that it is by 
design. The fact, that your design preferences differ is irrelevant.
Maxim
21-Sep-2010
[18354x3]
no not irrelevent.  we are all users, and some of us agree that this 
is a hole in the design.
Carl isn't all knowing and he has seen the light on many user ideas 
too.
using integers is often the only way get access to huge datasets 
and being able to provide keys.
Ladislav
21-Sep-2010
[18357]
we are all users, and some of us agree that this is a hole in the 
design.
 - so what? some don't, which proves my point
Maxim
21-Sep-2010
[18358x2]
not being able to use paths to access these datasets is quite annoying 
since we can practically do all the rest.
but the fact that you don't agree doesn't make other's points irrelevant 
Lad.  :-)