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
|