Avdi Grimm’s book "Confident Ruby” and my work on CallBaecker and defp I had an Idea for an implementation of soft typing in Ruby. My goal was to build a shorthand for ruby’s conversion methods syntactic similar to other languages. By relying on ruby’s conversion methods I preserved the initial flexibility of ruby. Furthermore I’ve added extended Error messages to ease debuging code. And you can add custom types.
So I’m happy to publish my take on soft typing in ruby.
class ExampleClass extend Rubysierung include CallBaecker def buz(foo: String, bar: Strict::String) [foo, bar] end end
class ExampleClass extend Rubysierung include CallBaecker def buz(foo: , bar: ) foo = foo.to_s bar = bar.to_str [foo, bar] end end
[ # Type , explicid, implicid [String, :to_s, :to_str], [Integer, :to_i, :to_int], [Array, :to_a, :to_ary], [Complex, :to_c, :to_c], [Float, :to_f, :to_f], [Hash, :to_h, :to_hash], [Rational, :to_r, :to_r], [IO, :to_io, :to_io], [Proc, :to_proc, :to_proc], [Symbol, :to_sym, :to_sym], [Thread, :join, :join] ]
In the future I want to add the possibility to use default values with a specified type. If you have any additional types, ideas or enhancements, feel free to open a pull request, issue or leave a comment :)
Head over to the repository.
25-11-2014: adit -> change ‘static typing’ to ‘soft typing’