Module: Haskell
- Defined in:
- lib/haskell.rb,
lib/haskell/version.rb,
ext/haskell/haskell.c
Constant Summary collapse
- VERSION =
"0.0.2"
Class Method Summary collapse
- .assert_arg_type(meth, args, klasses) ⇒ Object
- .assert_rtn_type(meth, rtn, klass) ⇒ Object
- .wrong_type?(obj, klass) ⇒ Boolean
Class Method Details
.assert_arg_type(meth, args, klasses) ⇒ Object
5 6 7 8 9 10 11 12 |
# File 'lib/haskell.rb', line 5 def assert_arg_type(meth, args, klasses) args.each_with_index do |arg, i| if wrong_type?(arg, klasses[i]) raise ArgumentError, "Wrong type of argument, type of #{arg.inspect} should be #{klasses[i]}" end end end |
.assert_rtn_type(meth, rtn, klass) ⇒ Object
14 15 16 17 18 |
# File 'lib/haskell.rb', line 14 def assert_rtn_type(meth, rtn, klass) if wrong_type?(rtn, klass) raise TypeError, "Expected #{meth} to return #{klass} but got #{rtn.inspect} instead" end end |
.wrong_type?(obj, klass) ⇒ Boolean
20 21 22 |
# File 'lib/haskell.rb', line 20 def wrong_type?(obj, klass) !(obj.is_a?(klass) || klass == Any) end |