Chervil is a toy Lisp interpreter written in Ruby
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

core.rb 957B

12345678910111213141516171819202122232425262728
  1. module Chervil
  2. module Core
  3. def self.compare_pairs(ary, method)
  4. pairs = Array.new
  5. ary.each_with_index do |el, i|
  6. unless ary[i + 1].nil?
  7. pairs.push([el, ary[i + 1]])
  8. end
  9. end
  10. !(pairs.map { |pair| pair[0].send(method, pair[1]) }.any?(false))
  11. end
  12. CORE = {
  13. "+" => Proc.new { |args| args.inject(:+) },
  14. "-" => Proc.new { |args| args.inject(:-) },
  15. "*" => Proc.new { |args| args.inject(:*) },
  16. "/" => Proc.new { |args| args.inject(:/) },
  17. "=" => Proc.new { |args| compare_pairs(args, :==) },
  18. "<" => Proc.new { |args| compare_pairs(args, :<) },
  19. ">" => Proc.new { |args| compare_pairs(args, :>) },
  20. "<=" => Proc.new { |args| compare_pairs(args, :<=) },
  21. ">=" => Proc.new { |args| compare_pairs(args, :>=) },
  22. "and" => Proc.new { |args| !(args.include?(false)) },
  23. "or" => Proc.new { |args| args.any? { |arg| !!arg == true } },
  24. }
  25. end
  26. end