Ruby with Type.


require 'haskell'

# Ruby 2.1.0+
class MyClass
    type Numeric >= Numeric >= Numeric, def sum(x, y)
    x + y
  end

  type Numeric >= Numeric >= Numeric, def wrong_sum(x, y)
  'string'
  end
end

MyClass.new.sum(1, 2)
#=> 3

MyClass.new.sum(1, 'string')
#=> ArgumentError: Wrong type of argument, type of "str" should be Numeric

MyClass.new.wrong_sum(1, 2)
#=> TypeError: Expected wrong_sum to return Numeric but got "str" instead

# Ruby 1.8.0+
class MyClass
  def sum(x, y)
    x + y
  end
  type Numeric >= Numeric >= Numeric, :sum
end

Installation

Add this line to your application's Gemfile:

gem 'haskell'

And then execute:

$ bundle

Or install it yourself as:

$ gem install haskell

More example

class People
  type People >= Any, def marry(people)
    # Your Ruby code as usual
  end
end

People.new.marry(People.new)
#=> no error

People.new.marry('non people')
#=> ArgumentError: Wrong type of argument, type of "non people" should be People

Contributing

  1. Fork it ( https://github.com/[my-github-username]/haskell/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Credits

@chancancode first brought this to my attention.