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
- Fork it ( https://github.com/[my-github-username]/haskell/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Credits
@chancancode first brought this to my attention.