Module: AppKernel::Function

Defined in:
lib/appkernel/function.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(mod) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/appkernel/function.rb', line 10

def self.included(mod)
  class << mod
    def function(symbol, &definition)
      fun = ::AppKernel::FunctionDefinition.new(symbol, self, definition)
      self.const_set(symbol, fun)
      self.send(:define_method, symbol) do |*args|
        FunctionApplication.apply_or_die(fun, *args)
      end
      if self.class == Module      
        self.send(:module_function, symbol) 
      else
        class << self;self;end.send(:define_method, symbol) do |*args|
          FunctionApplication.apply_or_die(fun, *args)
        end
      end
    end
    
    def apply(fun, *args)
      FunctionApplication.new(fun, *args)
    end
  end
end

Instance Method Details

#apply(fun, *args) ⇒ Object



6
7
8
# File 'lib/appkernel/function.rb', line 6

def apply(fun, *args)
  FunctionApplication.new(fun, *args)
end