sapphire-lang 0.7.0

Gradually typed scripting language where every value is an object and types are optional, checked at runtime
Documentation
# Map is a key-value collection. Keys are strings; values are arbitrary values.
# This class adds filtering and predicate helpers on top of each and lookup.
#
class Map {
  # Returns a new map containing only pairs for which the block returns true.
  #
  #   { name: "Alice", age: 30 }.select { |k, v| v == 30 }   # { age: 30 }
  #
  def select {
    result = {}
    each { |k, v| result[k] = v if yield(k, v) }
    result
  }

  # Returns true if the block returns a truthy value for at least one pair.
  #
  #   { a: 1, b: 2 }.any? { |k, v| v > 1 }   # true
  #   { a: 1, b: 2 }.any? { |k, v| v > 9 }   # false
  #
  def any?() {
    each { |k, v| return true if yield(k, v) }
    false
  }

  # Returns true if the block returns a truthy for every pair. Empty maps are true.
  #
  #   { a: 1, b: 2 }.all? { |k, v| v > 0 }   # true
  #   { a: 1, b: 2 }.all? { |k, v| v > 1 }   # false
  #
  def all?() {
    each { |k, v| return false if !yield(k, v) }
    true
  }

  # Returns true if the block never returns a truthy value (empty maps are true).
  #
  #   { a: 1, b: 2 }.none? { |k, v| v > 9 }   # true
  #   { a: 1, b: 2 }.none? { |k, v| v > 1 }   # false
  #
  def none?() {
    each { |k, v| return false if yield(k, v) }
    true
  }
}