Ruby Core - Lambda function

P

Paul A.

Hi,

Just a thin post in order to purpose this:

I think it could be cool to call lambda function just like: λ

Such as:

a = 0
my_while λ { a < 5 } do
puts a
a += 1
end

I think λ is more human then ->

Regards
 
R

Robert Klemme

2010/5/28 Paul A. said:
Just a thin post in order to purpose this:

I think it could be cool to call lambda function just like: =EB

Such as:

a =3D 0
my_while =A0=EB { a < 5 } =A0do
=A0 puts a
=A0 a +=3D 1
end

I think =EB is more human then ->

This might cause issues with encoding of the source code - I believe
it is unspoken agreement that programming languages use 7 bit ASCII as
least common denominator for encoding of keywords and control
structures. And the reason is that with that convention you have the
biggest chance of being robust against encoding differences (e.g. IIRC
7 bit ASCII is a subset even of UTF-8 and of course all the ISO 8859
encodings). There might even be systems that do not support an
encoding which knows the greek lambda. This would limit portability
of source code.

Maybe this is a topic for ruby-core (cross posted there).

Kind regards

robert

--=20
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/
 
P

Piyush Ranjan

okay I have seen this in clojure also. sigma and likes. Can you please tell
me how to type it ? :p

Piyush
 
C

Caleb Clausen

Hi,

Just a thin post in order to purpose this:

I think it could be cool to call lambda function just like: =EB

Such as:

a =3D 0
my_while =EB { a < 5 } do
puts a
a +=3D 1
end

Honestly, why is this better than:

a=3D0
while a<5 do
puts a
a+=3D1
end

This way is so much less noisy and more succinct. You could even leave
off the do.

lambdas should not be used to replace arbitrary expressions. Only
where you need them.
I think =EB is more human then ->

Idunno. It's just some (fairly arbitrary) greek letter. I find the
arrow a little more evocative myself.

Putting Robert's doubts about encoding issues aside, you can already
do this in both 1.8 and 1.9:

#encoding: utf-8
alias =EB lambda
x=3D=EB{ p :foo }
x.call #=3D> :foo

In 1.8, you do have to pass -Ku on the command line, tho.

I am with Piyush on the question of how you type these things, tho. My
keyboard only has ascii on it. I'm putting off adopting unicode until
a unicode keyboard is available.
 
I

Intransition

Hi,

Just a thin post in order to purpose this:

I think it could be cool to call lambda function just like: =CE=BB

Such as:

a =3D 0
my_while =C2=A0=CE=BB { a < 5 } =C2=A0do
=C2=A0 =C2=A0puts a
=C2=A0 =C2=A0a +=3D 1
end

I think =CE=BB is more human then ->

For that matter, if we're going by similarity, doesn't /\ look much
more like =CE=BB than -> ?

f =3D /\(x){ x < 5 }
 
R

Robert Klemme

2010/5/28 Caleb Clausen said:
Honestly, why is this better than:

=A0a=3D0
=A0while a<5 do
=A0 =A0puts a
=A0 =A0a+=3D1
=A0end

or even

5.times do |a|
puts a
end

or even

puts (0...5).to_a
This way is so much less noisy and more succinct. You could even leave
off the do.

lambdas should not be used to replace arbitrary expressions. Only
where you need them.

Yep, fully agree.
Putting Robert's doubts about encoding issues aside, you can already
do this in both 1.8 and 1.9:

#encoding: utf-8
alias =EB lambda
x=3D=EB{ p :foo }
x.call #=3D> :foo

In 1.8, you do have to pass -Ku on the command line, tho.

This is cool! Thanks for that.
I am with Piyush on the question of how you type these things, tho. My
keyboard only has ascii on it. I'm putting off adopting unicode until
a unicode keyboard is available.

You'll need a new desk then, too - and probably a set of arm extensions. :-=
)

Cheers

robert

--=20
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/
 
C

Caleb Clausen

You'll need a new desk then, too - and probably a set of arm extensions. :)

I meant it as mostly a joke, but I really do want a unicode keyboard
if one could possibly exist.

I'd be satisfied if my unicode keyboard left off chinese, japanese,
korean, and vietnamese glyphs, since I'm very unlikely to use those.
That should reduce the size of the keyboard by about 3/4. I'd still
need several new desks, tho. :-/
 
K

Ken Bloom

I meant it as mostly a joke, but I really do want a unicode keyboard if
one could possibly exist.

I'd be satisfied if my unicode keyboard left off chinese, japanese,
korean, and vietnamese glyphs, since I'm very unlikely to use those.
That should reduce the size of the keyboard by about 3/4. I'd still need
several new desks, tho. :-/

I think an optimus maximus keyboard would be what you want. Set the 10
keys on the left as modifiers to switch between different langauges.

--Ken
 
J

Joel VanderWerf

Robert said:
puts (0...5).to_a

Pointless golf of the day:

puts(*0...5)

But this is even farther from the original point, which is why not have
a more compact notation for when you need to pass more than one block to
a method.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,901
Latest member
Noble71S45

Latest Threads

Top