class Proc

def self.new(&block)

def self.new(&block)
  `if (block === nil) no_block_given();`
  `block.is_lambda = false`
  block
end

def arity

def arity
  `#{self}.length - 1`
end

def call(*args)

def call(*args)
  `#{self}.apply(null, #{args})`
end

def lambda?

def lambda?
  # This method should tell the user if the proc tricks are unavailable,
  # (see Proc#lambda? on ruby docs to find out more).
  `!!#{self}.is_lambda`
end

def to_proc

def to_proc
  self
end