[ruby-list:50113] [ANN] Ruby + type = Rubype

From: Tanaka Kazuki <mail@...>
Date: 2015-04-13 08:45:12 UTC
List: ruby-list #50113
こんにちは.
Rubype というオモチャGemを作りましたので、宜しければ遊んで見て下さい.
https://github.com/gogotanaka/Rubype
実行時レベルでメソッドに型拘束 をお手軽につける、という事になっています.
ここでいう型拘束とは、引数or返値が反応すべきメソッドや#is_a? が真を返すべきモジュールやクラスを指定し
条件に漏れればいい感じのエラーを吐き捨てるという事を指します.

何かひらめきのお手伝いになれれば幸いです.
require 'rubype'
class MyClass
  # Assert first arg has method #to_i, second arg and return value are instance of Numeric.
  def sum(x, y)
    x.to_i + y
  end
  typesig :sum, [:to_i, Numeric] => Numeric
end

MyClass.new.sum(:has_no_to_i, 2)
#=> Rubype::ArgumentTypeError: for MyClass#sum's 1st argument
#   Expected: respond to :to_i,
#   Actual:   :has_no_to_i
#   ...(stack trace)
実装はprependされた無名モジュール(プロキシの様なイメージ)が引数返値を逐一確認するという80行ほどの素朴なものとなっています.
田中--===============================Keio university mathematical sciences  田中 和希  Kazuki Tanaka
mail: mail@tanakakazuki.comHP: http://gogotanaka.me/Blog: http://blog.gogotanaka.me/Twitter: @gogo_tanakaFacebook: https://www.facebook.com/gogogogotanaka=============================== 		 	   		  

In This Thread

Prev Next