1. = vs := and = vs ==

What would it take to allow := in an assignment statement? (Phix by Lomax already does this.)

What would it take to allow = to compare atoms and == to compare objects?

These syntax changes could make it easier for a Euphoria initiate.

_tom

new topic     » topic index » view message » categorize

2. Re: = vs := and = vs ==

_tom said...

What would it take to allow := in an assignment statement? (Phix by Lomax already does this.)

What would it take to allow = to compare atoms and == to compare objects?

These syntax changes could make it easier for a Euphoria initiate.

_tom

I think that it would unnecessarily complicate things. You might as well introduce a keyword "let". I never had a problem differentiating between equality test and assignment.

As for comparing the equality of objects with "=" instead of "equal()", it's been discussed before but I would have to dig back through the archives to remember all of the old arguments pro/con.

new topic     » goto parent     » topic index » view message » categorize

3. Re: = vs := and = vs ==

NO!

Never let it happen. I remember spending hours wondering why a section of code wasn't code wasn't working when a = b+c was buried within it, and groaning when I'd found it writing Delphi programs. One of the reasons I love Eu.

Chris

new topic     » goto parent     » topic index » view message » categorize

4. Re: = vs := and = vs ==

I find that having multiple types of = just makes it easier to have syntax errors, such as accidentally assigning a value in an if statement and wondering why it always returns true. I like the simplicity of euphoria and the small set of symbols to remember. I find that languages that have 50 different types of operation symbols may make your code look more compact and gives you a sense of accomplishment when you managed to iterate a variable while shifting bits and doing logic operations all in 1 statement, but Euphoria code is so much easier to read and comprehend. I especially like the lack of semicolons between every statement.

new topic     » goto parent     » topic index » view message » categorize

5. Re: = vs := and = vs ==

ChrisB said...

NO!

Never let it happen. I remember spending hours wondering why a section of code wasn't code wasn't working when a = b+c was buried within it, and groaning when I'd found it writing Delphi programs. One of the reasons I love Eu.

Chris

Not sure I agree here. It's easy to typo a = when == was meant, but typoing := in place of == would be a lot harder.

Even if we continue to refuse to allow assignment in the middle of evalutions, we could still have the new symbols, but then

if a := b+c then 

would just throw a syntax error. That leaves open the possiblity of using new symbols for the sake of reader's clarity.

new topic     » goto parent     » topic index » view message » categorize

6. Re: = vs := and = vs ==

_tom said...

What would it take to allow := in an assignment statement? (Phix by Lomax already does this.)

I do not think this is necessary. I don't think many people get confused by assignment vs comparison.

_tom said...

What would it take to allow = to compare atoms and == to compare objects?

What is confusing, however, is why = cannot compare objects while equal() can. (Can't = just be shorthand for equal()?) IIRC, allowing = to compare objects in if/while statements is relatively trivial. I believe it's a simple matter of changing the op (opEQUAL?) routine in the interpreter. At least, this was true in Euphoria 2.x and 3.x. I haven't spent much time in the Euphoria 4.x source code, but I would welcome this change.

-Greg

new topic     » goto parent     » topic index » view message » categorize

7. Re: = vs := and = vs ==

Thanks,

I just trying to understand why the supporters of := for assignment feel so strongly about it.

_tom

new topic     » goto parent     » topic index » view message » categorize

8. Re: = vs := and = vs ==

_tom said...

What would it take to allow := in an assignment statement? (Phix by Lomax already does this.)

What would it take to allow = to compare atoms and == to compare objects?

These syntax changes could make it easier for a Euphoria initiate.

There is no need to introduce new operators. The reason for Euphoria's limitation on using '=' for boolean compare in statements is the because of a design decision to evaluate the expression before using the result in the test. Basically it boils down to the definition of IF is more like ...

IF integer THEN

So when the parser sees 'if a = b then' it first evaluates the 'a = b' like this ...

When 'a' or 'b' is a sequence, then each of its elements are evaluated for equality and a sequence is returned as the result. We end up with

IF sequence THEN

which is illegal.

The way to properly "fix" this is to change the parser to perform a boolean test in these situations rather than a sequence operation. This is quite a big deal though, given the way its coded.

new topic     » goto parent     » topic index » view message » categorize

9. Re: = vs := and = vs ==

jimcbrown said...
ChrisB said...

NO!

Never let it happen. I remember spending hours wondering why a section of code wasn't code wasn't working when a = b+c was buried within it, and groaning when I'd found it writing Delphi programs. One of the reasons I love Eu.

Chris

Not sure I agree here. It's easy to typo a = when == was meant, but typoing := in place of == would be a lot harder.

Even if we continue to refuse to allow assignment in the middle of evalutions, we could still have the new symbols, but then

if a := b+c then 

would just throw a syntax error. That leaves open the possiblity of using new symbols for the sake of reader's clarity.

Hi

Its not about typing the typo, but reading and finding the typo, for instance

if a = b+c then d := e+f end if
vs
if a = b+c then d = e+f end if
or
if a := b+c then d := e+f end if
would always evaluate to true, and would be a nightmare to find.

I don't care if they're assignments or comparisons, the syntax takes care of it, but I would have to if I was forced to be more specific, which for me adds another layer of detail I can just do without.

Cheers Chris

new topic     » goto parent     » topic index » view message » categorize

10. Re: = vs := and = vs ==

Just to put my position on this so people know.

I find == annoying in awk which I use a lot - it is error-prone.

I have always liked := and even <- for assignment (Ada, Pascal, Algol)

I don't mind = and for some reason I find Euphoria's usage for both assignment and comparison comfortable and easily better than C's =, ==.

My original comment was not a criticism but to make the point that a = b is not surprising but 'A' + 'B' is (even though it will sum in Euphoria).

I don't use goto much and would rather do without it generally but if x then goto ERROR is usually cleaner than other error-handling in Euphoria.

new topic     » goto parent     » topic index » view message » categorize

11. Re: = vs := and = vs ==

ChrisB said...
jimcbrown said...

Even if we continue to refuse to allow assignment in the middle of evalutions, we could still have the new symbols, but then

if a := b+c then 

would just throw a syntax error. That leaves open the possiblity of using new symbols for the sake of reader's clarity.

if a = b+c then d := e+f end if
vs
if a = b+c then d = e+f end if
or
if a := b+c then d := e+f end if
would always evaluate to true,

Uh, no, the last one would throw a syntax error at you. You'd get file and line number and everything.

ChrisB said...

I don't care if they're assignments or comparisons, the syntax takes care of it, but I would have to if I was forced to be more specific, which for me adds another layer of detail I can just do without.

Cheers Chris

Hmm. That's a good point. On the other hand, it's already worse via = vs equals()...

new topic     » goto parent     » topic index » view message » categorize

12. Re: = vs := and = vs ==

gimlet said...

I don't use goto much and would rather do without it generally but if x then goto ERROR is usually cleaner than other error-handling in Euphoria.

Huh? What's the usual error-handling in Euphoria, then?

new topic     » goto parent     » topic index » view message » categorize

13. Re: = vs := and = vs ==

Exception handling.

Much cleaner in my opinion and doesn't interrupt the flow of the algorithm.

new topic     » goto parent     » topic index » view message » categorize

14. Re: = vs := and = vs ==

gimlet said...
jimcbrown said...
gimlet said...

I don't use goto much and would rather do without it generally but if x then goto ERROR is usually cleaner than other error-handling in Euphoria.

Huh? What's the usual error-handling in Euphoria, then?

Exception handling.

Um, Euphoria doesn't have that yet.

gimlet said...

Much cleaner in my opinion and doesn't interrupt the flow of the algorithm.

So you think using goto is cleaner than exception handling? Interesting.

Or are you saying that using goto that way looks like exception handling in Euphoria (a poor man's exception handling, so to speak) and both are cleaner for that reason? In which case, they are cleaner than ... what, exactly?

new topic     » goto parent     » topic index » view message » categorize

15. Re: = vs := and = vs ==

Mostly I have found that an exception handler (Ada PL/SQL) is something to handle a situation where your program is usually about to die.

As Euphoria doesn't have exception handlers (and I don't think it's missing much) goto a handling area is not bad.

Perhaps you don't agree. It's an opinion.

new topic     » goto parent     » topic index » view message » categorize

16. Re: = vs := and = vs ==

gimlet said...

My original comment was not a criticism but to make the point that a = b is not surprising but 'A' + 'B' is (even though it will sum in Euphoria).

The problem in documentation is learning what is "surprise." One then writes something that hopefuly makes the surprise go away. (The fun part is writing a one line description in a thousand page manual so we can say RTFM.)

  1. An object is composed of just one or many numbers.
  2. The plus character + always adds.
  3. The result of + is another number.
  4. x = 'A' + 'B'
    

    x has to be a number, no surprise.

If you accept the principle that Euphoria is consistent and predictable then there is no room for surprise.

If you come pre-conditioned from another language then 'A'+'B' can have an alternative meaning.

Overloading + to mean concatenation is possibly convenient; I could equally say that when plus no longer adds, I am surprised.

_tom

new topic     » goto parent     » topic index » view message » categorize

17. Re: = vs := and = vs ==

It shouldn't be too difficult to realize that '&' is used for string and sequence concatenation instead of '+'. In fact, if users try to join strings instead of simple characters with '+' then they will get a lot of errors.

-- will give an error "sequence lengths are not the same (21 != 9)" 
sequence t = "This string is longer" + "than this" 

I'm not sure if using '+' originated with BASIC or before, although it is pretty common.

new topic     » goto parent     » topic index » view message » categorize

18. Re: = vs := and = vs ==

The surprise is that this doesn't make good sense.

This is a distinction between what you can do and what you should do.

Basic's 'A' + 'B' was and still is concatenation.

new topic     » goto parent     » topic index » view message » categorize

19. Re: = vs := and = vs ==

I think we'll just have to disagree -- it makes as much sense to me as does "65 + 66" and it makes some algorithms simpler.

new topic     » goto parent     » topic index » view message » categorize

20. Re: = vs := and = vs ==

gimlet said...

The surprise is that this doesn't make good sense.

This is a distinction between what you can do and what you should do.

Basic's 'A' + 'B' was and still is concatenation.

The Basic language was designed to "get something working" on a mainframe computer. Design and elegance was not a consideration at that time. Kids in computer 101 ran around with punch-cards and everyone was happy to get a for loop working. Basic does not make perfect sense, but it works.

Ruby is a "whimsical language" were the syntax follows what Yukihiro Matsumoto felt made sense. Lots of people, who think like Matsumoto, like Ruby. If you think in Ruby it makes sense.

Euphoria was inspired by "speed." To get speed you need a clean direct path to that speed. That is why when you learn that + means add numbers, Euphoria always adds numbers.

If I say "Euphoria is easy to learn" it is because once you learn a principle you can depend on it. That is much simpler than saying + sometimes adds and sometimes concatenates, but that is ok because the data-types are different.

If you add a lot of "should do" (for whimsical reasons) you no longer have a Euphoria language.

_tom

new topic     » goto parent     » topic index » view message » categorize

21. Re: = vs := and = vs ==

_tom said...

What would it take to allow := in an assignment statement? (Phix by Lomax already does this.)

ChrisB said...

NO!

To clarify, where the compiler would treat "=" as assignment it lets you use ":=" but reports an error if you try to use "==". Where the compiler would treat "=" as a comparison it lets you use "==" but reports an error if you try to use ":=". So,

if a:=b then c==d end if 

contains two fatal compilation errors.

ChrisB said...

I don't care if they're assignments or comparisons, the syntax takes care of it, but I would have to if I was forced to be more specific, which for me adds another layer of detail I can just do without.

As above, in Phix, they are entirely optional, you are perfectly free to continue to use "=" for everything, if you want.

ryanj said...

I especially like the lack of semicolons between every statement.

I made them optional in Phix. I just got sick of getting home after coding in C++ all day and not being able to write Eu code (and vice versa, but that would probably have taken rather more than the 3 minutes it took to modify my compiler). I also once somehow managed to slip in a ">" between two assignment statements (that used "=") which took 3 days (THREE DAYS!) to track down, which would obviously have been lit up like a Christmas Tree if only they had been separated by semicolons.

ghaberek said...

What is confusing, however, is why = cannot compare objects while equal() can. (Can't = just be shorthand for equal()?) IIRC, allowing = to compare objects in if/while statements is relatively trivial. I believe it's a simple matter of changing the op (opEQUAL?) routine in the interpreter. At least, this was true in Euphoria 2.x and 3.x. I haven't spent much time in the Euphoria 4.x source code, but I would welcome this change.

DerekParnell said...

The way to properly "fix" this is to change the parser to perform a boolean test in these situations rather than a sequence operation. This is quite a big deal though, given the way its coded.

The real problem is implicit sequence ops. So much so that Phix only allows explicit (function-style) sequence ops. One example I came up with (oh gosh, so many years ago now!) was:

if (a=b)=(c=d) then 

It (might) seem clear that the "inner" "=" needs to generate a boolean so must be a comparison, but what about the "outer" two? I am very certain that trying to be "clever" about selecting which in the parser will lead you to a whole new world of pain.

Regards,
Pete

Edit: I retrieved this, from my assorted notes, which might help make that last example a little clearer

 
              name="robbie" 
              city="moscow" 
              .... 
              if (name="robert") = (city="london") then 

Which could quite reasonably be taken as equivalent to either

              if equal({1,1,1,0,0,0},{0,1,0,0,1,0}) then  (false) 

or

              if equal(false,false) then                  (true) 

In this particular case, it seems the compiler would effectively have to make a blind guess about what the programmer actually meant, and most likely get it wrong about 50% of the time.

Another potential gotcha could be temp=(city="london") behaving entirely differently depending on whether temp was declared as integer or sequence, and/or, of course, play a similar guessing game when it is an object.

new topic     » goto parent     » topic index » view message » categorize

22. Re: = vs := and = vs ==

I like := for assignment and == for comparison. I don't see why they should even throw errors necessarily when used in a place where = would have the other meaning. If I were designing a language from the ground up, I would have := for assignment and == for comparison. Comparison like Phix with == and comparison one object down with something like (==), two objects down with ((==)). Conditionals would have to evaluate to a boolean type, which would have to be builtin to the language, like Java.

Honey (==) Money -- is (false, true, true, true, true) 
Honey == Money   -- is false 
( "Ha", "Ja" ) (==) ( "Ja", "Ja" ) -- is (false, true) 
( "Ha", "Ja" ) ((==)) ( "Ja", "Ja") -- is [ (false, true), (true, true) ] 
As long as = retains its old meaning this wouldn't break code. There is a bug introduction risk associated to each change to the runtime and parser system as with any language though.

Shawn

new topic     » goto parent     » topic index » view message » categorize

23. Re: = vs := and = vs ==

SDPringle said...

comparison one object down with something like (==), two objects down with ((==))

Yuck, yuck, and thrice yuck.

You can easily achieve that sort of thing, and so much more, with a simple and straightforward function.

Pete

new topic     » goto parent     » topic index » view message » categorize

24. Re: = vs := and = vs ==

petelomax said...
SDPringle said...

comparison one object down with something like (==), two objects down with ((==))

Yuck, yuck, and thrice yuck.

You can easily achieve that sort of thing, and so much more, with a simple and straightforward function.

Pete

I'll raise your three yucks with six. ~shudder~

Chris

new topic     » goto parent     » topic index » view message » categorize

25. Re: = vs := and = vs ==

The reason this is clear in Euphoria is because you can't do assignments within expressions unlike certain languages. In some languages (like C), assignment statements are expressions in themselves, and return a value. Therefore, the meaning of assignment vs. comparison is ambiguous.

In Euphoria, this isn't the case. Assignment is one kind of statement which must start with an identifier followed by '=' followed by an expression. There is no ambiguity because assignment statements cannot be part of an expression; they don't return a value.

One problem is that in cases involving sequences, comparison operators return a value other than "true" or "false" in Euphoria. That was a design mistake, in my view.

I've been playing around with ideas and I know that it has been hashed out before.

All comparison operators should return a "true" or "false" value of 1 or 0.

If I was designing a Euphoria-like language, here's how I would handle operators:

where op is a mathematical operation + - * / 
Sequence op scalar or scalar op sequence = new sequence with operation applied. (This is how Euphoria acts now). 
sequence op sequence = new sequence with all elements opped together. 
Mismatched sequence size is a no op for elements of the longer sequence [even for - and /]. 
{} op object is no op. Returns object unchanged. 
 
where op is a comparison operation = != < > and or 
0 is false. Comparisons return '0' as false. 
{} is false. 
not zero is true. Comparisons return '1' as true. 
Any non-empty sequence is true. 
 
sequence op sequence = boolean value of 1 or 0 (true or false). Comparison is a deep comparison if necessary. 
 
{} op object returns false for all tests except !=. 
{} op {} returns false for all tests except =. 
 

For Euphoria's current comparison behavior, I would use builtins.

new topic     » goto parent     » topic index » view message » categorize

26. Re: = vs := and = vs ==

jaygade said...

If I was designing a Euphoria-like language, here's how I would handle operators:

Mismatched sequence size is a no op for elements of the longer sequence [even for - and /]. 
{} op object is no op. Returns object unchanged. 

Interesting idea. Not that I have any compelling reason to make such changes, given the following function implements the current behaviour,

function sq_div(object a, object b) 
    if atom(a) then 
        if atom(b) then return a/b end if 
        for i=1 to length(b) do 
            b[i] = sq_div(a,b[i]) 
        end for 
        return b 
    elsif atom(b) then 
        for i=1 to length(a) do 
            a[i] = sq_div(a[i],b) 
        end for 
        return a 
    end if 
    if length(a)!=length(b) then fatal(a,b) end if 
    for i=1 to length(a) do 
        a[i] = sq_div(a[i],b[i]) 
    end for 
    return a 
end function 

then this implements that suggestion

function xq_div(object a, object b) 
    if atom(a) then 
        if atom(b) then return a/b end if 
        for i=1 to length(b) do 
            b[i] = xq_div(a,b[i]) 
        end for 
        return b 
    elsif atom(b) then 
        for i=1 to length(a) do 
            a[i] = xq_div(a[i],b) 
        end for 
        return a 
    end if 
--  if length(a)!=length(b) then fatal(a,b) end if 
    if length(a)<length(b) then 
        for i=1 to length(a) do 
            b[i] = xq_div(a[i],b[i]) 
        end for 
        return b 
    end if 
    for i=1 to length(b) do 
        a[i] = xq_div(a[i],b[i]) 
    end for 
    return a 
end function 

Not exactly difficult, at least in hll, though there are quite a few of them, and like I said I'm not convinced it is necessarily an improvement.

jaygade said...

{} is false. Any non-empty sequence is true.

Oh, I have heard that one before blink

I concluded this is a knee-jerk reaction to the dreaded "true/false condition must be an ATOM", which used to plague me back in the days when I used RDS Eu.

Since moving full-time to Phix and removing implicit sequence ops, this happens, I kid you not, less than once a year.

Besides, I simply just don't buy that expressions such as "{1,2,3} and {4,5,6}" have any meaningful true/false answer, and for my money "programming error" wins hands down.

jaygade said...

For Euphoria's current comparison behavior, I would use builtins.

I have no clear idea what you really mean by that. If you are thinking of some mythical performance-related issue, I have found that it is almost always faster to use a non-sequence-op method, and in fact hll code such as that above can be aggressively pass-by-reference-optimized [although I should admit to recently breaking that handling in Phix] and therefore (at least for quite long/nested sequences) massively outperform the equivalent low-level code.

Pete

new topic     » goto parent     » topic index » view message » categorize

27. Re: = vs := and = vs ==

petelomax said...
jaygade said...

For Euphoria's current comparison behavior, I would use builtins.

I have no clear idea what you really mean by that.

I'm guessing he means to make e.g. sq_div() et al builtin functions for those rare applications that truly depend on sequence-op methods. (The only example I can think of offhand is older applications that inlined RDS's lower() and upper() methods.)

petelomax said...

If you are thinking of some mythical performance-related issue,

But you seem to be arguing that we might as well just implement it in a std/sequenceop.e library somewhere, as you can't seem to think of a real advantage to keeping this stuff built into the interpreter. (The same is true for me - I think sequence ops like that are rare enough that even if there was a performance issue, it'd still be a non-issue.)

new topic     » goto parent     » topic index » view message » categorize

28. Re: = vs := and = vs ==

I thought the purpose of the Pre-Processor was add things like := and == etc.

new topic     » goto parent     » topic index » view message » categorize

29. Re: = vs := and = vs ==

petelomax said...

I have no clear idea what you really mean by that. If you are thinking of some mythical performance-related issue, I have found that it is almost always faster to use a non-sequence-op method, and in fact hll code such as that above can be aggressively pass-by-reference-optimized [although I should admit to recently breaking that handling in Phix] and therefore (at least for quite long/nested sequences) massively outperform the equivalent low-level code.

Pete

Obviously neither one of us is understanding the other here, since I cannot interpret your question. I'm certainly not thinking of any performance-related issue, but rather principle of least surprise.

if "ABC" = "ABC" should evaluate to 1 or true, not to {1, 1, 1}. if {1.29, {3, "foo", 255}, 'A'} = {1.29, {3, "foo", 255}, 'A'} should also return a true or false value.

Inside the interpreter, first the references would be compared, and then the value, and then recurse through the sequence doing the same for every element.

This would obviously be most useful for strings, but also for lists of strings and lists of other objects.

To return a sequence of booleans instead of reducing a comparison to a single boolean, then I would use bool_equal() or some other as yet non-existent function. An alternative if it is important would be to make new operators using a . or a : along with =, <, >, != in order to specify returning a list of booleans instead of a single boolean.

Just some thoughts I'm playing with. I'm not suggesting changing Euphoria's existing behavior, just playing "what if".

Edit I'm going to backtrack a bit on the sequence arithmetic operations -- doing an arithmetic operation on sequences of different lengths is a possible error and so Euphoria's current behavior should be maintained.

I stand by the boolean thing though.

new topic     » goto parent     » topic index » view message » categorize

30. Re: = vs := and = vs ==

jimcbrown said...

But you seem to be arguing

jaygade said...

Obviously neither one of us

I was almost entirely focused on the "builtins" word, vs hll code. I have no disagreement with anything else just said.

jaygade said...

Edit I'm going to backtrack a bit on the sequence arithmetic operations

To be fair, I cannot see anything "wrong" with that idea, just not really anywhere it would be genuinely useful...

Pete

new topic     » goto parent     » topic index » view message » categorize

31. Re: = vs := and = vs ==

+1 for the := vs = distinction.

Syntactic differentiation helps mental clarity.

new topic     » goto parent     » topic index » view message » categorize

32. Re: = vs := and = vs ==

petelomax said...
jaygade said...

If I was designing a Euphoria-like language, here's how I would handle operators:

Mismatched sequence size is a no op for elements of the longer sequence [even for - and /]. 
{} op object is no op. Returns object unchanged. 

Interesting idea.

... snip...

then this implements that suggestion

function xq_div(object a, object b) 
    if atom(a) then 
        if atom(b) then return a/b end if 
        for i=1 to length(b) do 
            b[i] = xq_div(a,b[i]) 
        end for 
        return b 
    elsif atom(b) then 
        for i=1 to length(a) do 
            a[i] = xq_div(a[i],b) 
        end for 
        return a 
    end if 
--  if length(a)!=length(b) then fatal(a,b) end if 
    if length(a)<length(b) then 
        for i=1 to length(a) do 
            b[i] = xq_div(a[i],b[i]) 
        end for 
        return b 
    end if 
    for i=1 to length(b) do 
        a[i] = xq_div(a[i],b[i]) 
    end for 
    return a 
end function 

Not exactly difficult, at least in hll, though there are quite a few of them, and like I said I'm not convinced it is necessarily an improvement.

I've now implemented something like this (though nop elements are truncated): http://scm.openeuphoria.org/hg/euphoria/rev/bc7ba9aea3a6

(I'll look into keeping, instead of truncating, the nop elements at some point in time.)

petelomax said...
jaygade said...

{} is false. Any non-empty sequence is true.

Oh, I have heard that one before blink

I concluded this is a knee-jerk reaction to the dreaded "true/false condition must be an ATOM", which used to plague me back in the days when I used RDS Eu.

Since moving full-time to Phix and removing implicit sequence ops, this happens, I kid you not, less than once a year.

Besides, I simply just don't buy that expressions such as "{1,2,3} and {4,5,6}" have any meaningful true/false answer, and for my money "programming error" wins hands down.

I've also implemented jaygade's suggestion for this in the feature branch.

new topic     » goto parent     » topic index » view message » categorize

33. Re: = vs := and = vs ==

After my original suggestion, I realized that operations on sequences of different lengths as described is a potential source for hard-to-find bugs. However, doing a length comparison before doing an operation should be relatively cheap if the user wants to ensure the sequences are the same size.

It will be interesting to see if it can help some kinds of algorithms.

new topic     » goto parent     » topic index » view message » categorize

34. Re: = vs := and = vs ==

jimcbrown said...

I've now implemented something like this (though nop elements are truncated): http://scm.openeuphoria.org/hg/euphoria/rev/bc7ba9aea3a6

(I'll look into keeping, instead of truncating, the nop elements at some point in time.)

That seems fine.

jimcbrown said...
jaygade said...

{} is false. Any non-empty sequence is true.

I've also implemented jaygade's suggestion for this in the feature branch.

Is there a changeset for that?

Pete Edit: did you mean http://scm.openeuphoria.org/hg/euphoria/rev/587f8aedb552 ?

new topic     » goto parent     » topic index » view message » categorize

35. Re: = vs := and = vs ==

petelomax said...

Is there a changeset for that?

Pete Edit: did you mean http://scm.openeuphoria.org/hg/euphoria/rev/587f8aedb552 ?

Yep, that's the one.

new topic     » goto parent     » topic index » view message » categorize

36. Re: = vs := and = vs ==

petelomax said...
jimcbrown said...

I've now implemented something like this (though nop elements are truncated): http://scm.openeuphoria.org/hg/euphoria/rev/bc7ba9aea3a6

(I'll look into keeping, instead of truncating, the nop elements at some point in time.)

That seems fine.

I've now implemented the keeping of nop elements: http://scm.openeuphoria.org/hg/euphoria/rev/253355d356ea

new topic     » goto parent     » topic index » view message » categorize

37. Re: = vs := and = vs ==

This thread seems to be mixing with the "Funny/Clever tag lines for Euphoria" thread. I'm seeing messages which I believe belong here in the other thread. It makes it difficult to follow along.

new topic     » goto parent     » topic index » view message » categorize

38. Re: = vs := and = vs ==

jaygade said...

This thread seems to be mixing with the "Funny/Clever tag lines for Euphoria" thread. I'm seeing messages which I believe belong here in the other thread. It makes it difficult to follow along.

Should the relevant messages be moved from that thread to this one?

The reason this happened is that several years ago, someone made a comment about this kind of functionality on that thread. I replied recently, saying that it was now implemented, and the discussion grew from there.

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu