Rip is a functional, object-oriented programming language. "Hello World" is a simple one-liner:

System.IO.out("Hello, World")
  • Types and lambdas are completely anonymous, just like every other object. To name anything you need to assign it to a reference or a property.
  • Lambdas may be passed around like any other object.
  • Lambdas are called by passing arguments in parenthesis.
  • System is a predefined reference with properties referencing standard types. Properties are lazy evaluated.
  • Types have a property, System.Type.@.@, known as the prototype, which is used to define what instances will look like (similar to JavaScript's prototype, but not ugly).
  • Lambdas have a property, System.Lambda.@.@, which is a reference to the current receiver (similar to JavaScript's this keyword when used inside a function).

Practically speaking Rip allows one to write code like the following:

base = URL.new("www.example.com", 80, :username, "password")
url = base / :resource / :path ? :query: "search terms" ? :abc: :xyz

expect(url.to_string()) to_equal "http://username:password@www.example.com/resource/path?query=search%20terms&abc=xyz"