From: mail@... Date: 2014-12-17T07:52:56+00:00 Subject: [ruby-core:66900] [ruby-trunk - Feature #9999] Type Annotations Issue #9999 has been updated by gogo tanaka. I'm not sure how type annotations, gradual type or something like that with Ruby is, but it worth thinking. What I can say here now is not only class but also `method` can be annotated and typed `attr_accessor` is also worth thinking. ```ruby def sum(x, y) x.to_i + y end ``` then, x can be annotated as "something responding to `:to_i`" or "something responding to some methods which respond to `+`" Typed `attr_accessor` ```ruby attr_accessor name: String # can be annotated String(or NilClass ..?) ``` Just idea : ( ---------------------------------------- Feature #9999: Type Annotations https://bugs.ruby-lang.org/issues/9999#change-50450 * Author: Davide D'Agostino * Status: Assigned * Priority: Normal * Assignee: Yukihiro Matsumoto * Category: * Target version: ---------------------------------------- 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/