Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Ruby Core - Lambda function

Reply
Thread Tools

Ruby Core - Lambda function

 
 
Paul A.
Guest
Posts: n/a
 
      05-28-2010
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
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Robert Klemme
Guest
Posts: n/a
 
      05-28-2010
2010/5/28 Paul A. <(E-Mail Removed)>:
> 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/

 
Reply With Quote
 
 
 
 
Piyush Ranjan
Guest
Posts: n/a
 
      05-28-2010
okay I have seen this in clojure also. sigma and likes. Can you please tell
me how to type it ?

Piyush

2010/5/28 Robert Klemme <(E-Mail Removed)>

> 2010/5/28 Paul A. <(E-Mail Removed)>:
> > 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
> >
> > 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
>
> --
> remember.guy do |as, often| as.you_can - without end
> http://blog.rubybestpractices.com/
>
>


 
Reply With Quote
 
Caleb Clausen
Guest
Posts: n/a
 
      05-28-2010
On 5/27/10, Paul A. <(E-Mail Removed)> wrote:
> 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.

 
Reply With Quote
 
Intransition
Guest
Posts: n/a
 
      05-28-2010


On May 28, 2:37=C2=A0am, "Paul A." <(E-Mail Removed)> wrote:
> 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 }

 
Reply With Quote
 
Robert Klemme
Guest
Posts: n/a
 
      05-28-2010
2010/5/28 Caleb Clausen <(E-Mail Removed)>:
> On 5/27/10, Paul A. <(E-Mail Removed)> wrote:
>> 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 =A0=EB { a < 5 } =A0do
>> =A0 =A0puts a
>> =A0 =A0a +=3D 1
>> end

>
> 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/

 
Reply With Quote
 
andrew mcelroy
Guest
Posts: n/a
 
      05-28-2010
[Note: parts of this message were removed to make it a legal post.]

2010/5/28 Robert Klemme <(E-Mail Removed)>

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

Not if you use a lisp machine keyboard
http://www.sts.tu-harburg.de/~r.f.mo...s/keyboard.JPG

You would end up with key combos like hyper + meta + square + shift + v

> Cheers
>
>


> robert
>
> Andrew McElroy


 
Reply With Quote
 
Caleb Clausen
Guest
Posts: n/a
 
      05-28-2010
On 5/28/10, Robert Klemme <(E-Mail Removed)> wrote:
> 2010/5/28 Caleb Clausen <(E-Mail Removed)>:
>> 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.


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. :-/

 
Reply With Quote
 
Ken Bloom
Guest
Posts: n/a
 
      05-28-2010
On Fri, 28 May 2010 23:25:17 +0900, Caleb Clausen wrote:

> On 5/28/10, Robert Klemme <(E-Mail Removed)> wrote:
>> 2010/5/28 Caleb Clausen <(E-Mail Removed)>:
>>> 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.

>
> 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



--
Chanoch (Ken) Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu/~kbloom1/


 
Reply With Quote
 
Joel VanderWerf
Guest
Posts: n/a
 
      05-28-2010
Robert Klemme wrote:
> 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.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Type of lambda function returning a lambda function... Haochen Xie C++ 4 03-17-2013 11:23 PM
lambda vs non-lambda proc Steve Dogers Ruby 1 03-30-2009 10:11 PM
Core Solo & Core Duo are not Core microarchitecture; 65nm Pentium M chips bigal Hardware 0 03-22-2006 11:24 AM
Fedora Core 3 & Core 4 Password questions Brandon Computer Security 4 08-15-2005 04:30 AM
Re: Lambda as declarative idiom (was RE: what is lambda used for inreal code?) Roman Suzi Python 13 01-07-2005 09:33 PM



Advertisments