From: "İsmail Arılık" Date: 2015-03-22T09:50:04+02:00 Subject: [ruby-core:68598] Re: [Ruby trunk - Feature #9999] Type Annotations 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 : > Issue #9999 has been updated by Michel Perez. > > > If you start to add types to ruby for me it will end looking similar to scala > > 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. More 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 collisions. > > Then for point **2** I'm not sure if we want also check assignments but as before a syntax could be: > > ~~~ruby > r: Client = something # will throw an exception if something is not kind of Client > ~~~ > > Finally, **implementation**. Do we want some in python style and then leave 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/ -- ��yi g��nler. ��smail Ar��l��k