Re: Multi-assign

new topic     » goto parent     » topic index » view thread      » older message » newer message

This is how I understand multiple-assign so far...

Multiple assignment:

demo Newway Oldway
swap

{a,b} = {b,a}

object temp
temp = a
a = b
b = temp 
mutiple return

{ myfirst_number, mysecond_number} = value(something)

object temp = value( something )
? temp
-- { 100, 200 }
myfirst_number = temp[1]
mysecond_number = temp[2] 

Potential multiple return syntax when used with an omitted variable:

Symbol Sample Thoughts
1 'none'

{ , mysecond_number} = value(something)
too bare, easy to miss, bad for the eyes
2 $

{ $ , mysecond_number} = value(something)
symbol in use as end marker
3 #

{ # , mysecond_number} = value(something)
suggests 'comment' hence blank, bad used as #FF hex number
4 !

{ ! , mysecond_number} = value(something)
suggests 'not' as in `!=` hence blank
5 ~

{ ~ , mysecond_number} = value(something)
used in DOS as 'missing'

Of these choices the $ symbol is the worst choice because:

Prior Use Demo
1 sequence end marker -- length

seq[ 1 .. $ ]
2 enum end marker

enum A, B, C, $
3 list end marker

sequence s = { 1, 2, 3, $ }

Clearly, $ means "end marker" in Euphoria. Using $ for other purposes is OK, but using $ for "other purposes" within a sequence is very bad--an entrenched pattern is being broken.

Any marker, other than $, makes more sense.

Consider extending the marker idea to "missing arguments" in a routine:

foo( 1, 2,, 4) becomes foo(1,2,#,4) 

since "invisible" syntax is hard to use.

_tom

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu