[#68478] Looking for MRI projects for Ruby Google Summer of Code 2015 — Tony Arcieri <bascule@...>

Hi ruby-core,

10 messages 2015/03/10

[ruby-core:68598] Re: [Ruby trunk - Feature #9999] Type Annotations

From: İsmail Arılık <msms6174@...>
Date: 2015-03-22 07:50:04 UTC
List: ruby-core #68598
I guess this kind of feature will break the duck typing concept in
Ruby. A quotation:

"In Ruby, we rely less on the type (or class) of an object and more on
its capabilities. Hence, Duck Typing means an object type is defined
by what it can do, not by what it is. Duck Typing refers to the
tendency of Ruby to be less concerned with the class of an object and
more concerned with what methods can be called on it and what
operations can be performed on it. In Ruby, we would use respond_to?
or might simply pass an object to a method and know that an exception
will be raised if it is used inappropriately." [1]

[1] http://rubylearning.com/satishtalim/duck_typing.html

2015-03-22 7:06 GMT+02:00  <michel.ingesoft@gmail.com>:
> Issue #9999 has been updated by Michel Perez.
>
>
> If you start to add types to ruby for me it will end looking similar to s=
cala
>
> def connect(r: Stream, c: Client): Fiber
>
> ----------------------------------------
> Feature #9999: Type Annotations
> https://bugs.ruby-lang.org/issues/9999#change-51910
>
> * Author: Davide D'Agostino
> * Status: Assigned
> * Priority: Normal
> * Assignee: Yukihiro Matsumoto
> ----------------------------------------
> Hi all,
>
> I know @matz is interested in introducing **type annotations** in ruby. M=
ore here: https://bugs.ruby-lang.org/issues/5583
>
> I think it's time for ruby to get this.
>
> Before working on a patch I would like to know:
>
> 1. Syntax of methods signatures
> 2. Syntax of variables guards (?)
> 3. Implementation
>
> For point **1** I was thinking in some like:
>
> ~~~ruby
> def connect(r -> Stream, c -> Client) ->  Fiber
> def connect(Stream r, Client c) -> Fiber # quite sure this will make some=
 reduce problems in the grammar
> ~~~
>
> Before making a proposal consider: keyword arguments and default value co=
llisions.
>
> Then for point **2** I'm not sure if we want also check assignments but a=
s before a syntax could be:
>
> ~~~ruby
> r: Client =3D something # will throw an exception if something is not kin=
d of Client
> ~~~
>
> Finally, **implementation**. Do we want some in python style and then lea=
ve the programmer/library for the implementation **or** (and I'm for this) =
we want MRI do that, if so how?
>
> Cheers!
> DD
>
> p.s. Sorry if this issue was already discussed but I didn't find anything=
 except the link posted.
>
>
>
> --
> https://bugs.ruby-lang.org/



--=20
=C4=B0yi g=C3=BCnler.
=C4=B0smail Ar=C4=B1l=C4=B1k

In This Thread

Prev Next