README.md in haskell-0.2.3 vs README.md in haskell-1.0.0

- old
+ new

@@ -1,107 +1,17 @@ -# Ruby with Type. +# Haskell On Ruby -Matz has mentioned Ruby3.0 with static type at some confluences. But almost all rubyists(include me) are not sure how typed Ruby is. - -But it's worth thinking more. This gem is kind of trial without so much side-effect. - ```rb require 'haskell' +Haskell.compile %{ + add :: Integer -> Integer -> Integer + add x y = x + y + result = add 1 2 +} -# ex1 -class MyClass - def sum(x, y) - x + y - end - typesig sum: [Numeric, Numeric => Numeric] - - def wrong_sum(x, y) - 'string' - end - typesig wrong_sum: [Numeric, Numeric => Numeric] +while Haskell.compiling? +... end -MyClass.new.sum(1, 2) +p Haskell.execute #=> 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 - - -# ex2 -class People - type People >= Any, def marry(people) - # Your Ruby code as usual - end -end -typesig marry: [People => Any] - -People.new.marry(People.new) -#=> no error - -People.new.marry('non people') -#=> ArgumentError: Wrong type of argument, type of "non people" should be People ``` - -## Feature -### Typed method can coexist with non-typed method - -```ruby -# It's totally OK!! -class MyClass - def sum(x, y) - x + y - end - typesig sum: [Numeric, Numeric => Numeric] - - def sum_without_type(x, y) - 'string' - end -end -``` - -### Duck typing - -```ruby - -class MyClass - def foo(any_obj) - 1 - end - typesig sum: [Any => Numeric] -end - -# It's totally OK!! -MyClass.new.foo(1) -# It's totally OK!! -MyClass.new.foo('str') -``` - -## Installation - -gem install haskell or add gem 'haskell' to your Gemfile. - -This gem requires Ruby 2.0.0+. - -### Contributing - -Fork it ( https://github.com/[my-github-username]/haskell/fork ) - -Create your feature branch (`git checkout -b my-new-feature`) - - $ bundle install --path vendor/bundle - -Commit your changes (`git commit -am 'Add some feature'`) - - $ bundle exec rake test - - > 5 runs, 39 assertions, 0 failures, 0 errors, 0 skips - -Push to the branch (`git push origin my-new-feature`) - -Create a new Pull Request - -## Credits -[@chancancode](https://github.com/chancancode) first brought this to my attention. I've stolen some idea from him.