lib/vm/pfunctions.rb in p-lang-0.2.0 vs lib/vm/pfunctions.rb in p-lang-0.3.0
- old
+ new
@@ -1,9 +1,30 @@
module PLang
module VM
module PFunctions
+
+ def def_function(id, *params)
+ def_var(id, (plambda(*params) do |values|
+ yield(values)
+ end))
+ end
+
+ def def_object_message(object, message)
+ lamb = plambda(object, "{#{message.to_s}}") do |values|
+ yield(values[0], values[1])
+ end
+ begin
+ @env.set_var(:get_object_message, lamb)
+ rescue
+ @env.add_lambda(:get_object_message, lamb)
+ end
+ end
+ def def_var(id, value)
+ @env.set_var(id.to_sym, value)
+ end
+
def plambda(*params)
lamb = PLambda.new do |values|
yield(values)
end
@@ -20,27 +41,12 @@
end
PObject.new(:lambda, [lamb])
end
- def object_message(object, message)
- lamb = plambda(object, "{#{message.to_s}}") do |values|
- yield(values[0], values[1])
- end
- begin
- @env.set_var(:get_object_message, lamb)
- rescue
- @env.add_lambda(:get_object_message, lamb)
- end
- end
-
- def var(id, value)
- @env.set_var(id.to_sym, value)
- end
-
def object(expr)
PLang::Parser::SyntaxAnalyser.new(expr).parse[0]
end
end
end
-end
\ No newline at end of file
+end