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

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

Returns:

  • (Boolean)


20
21
22
# File 'lib/haskell.rb', line 20

def wrong_type?(obj, klass)
  !(obj.is_a?(klass) || klass == Any)
end