Ruby, another programming language inspired by Perl, can be made to support this syntax too:
# set local variables at the top level of a file
cout = $stdout
endl = "\n"
cout << "Whatever" << endl;
# equivalents:
$stdout.write("Whatever"); $stdout.write("\n")
# or
$stdout.puts("Whatever")
# or
puts "Whatever" # because the method Kernel#puts calls `$stdout.puts(*args)`
Or, if you want to this syntax to be usable in multiple files:
module CPlusPlusConstants
def cout
$stdout
end
def endl
"\n"
end
end
# in another file in the directory
require_relative 'cpp_constants.rb'
include CPlusPlusConstants
cout << "Whatever" << endl;
In Ruby, methods can be called without parentheses, so methods with no parameters that are in scope act just like a Raku “term” as described in this post. In the above code, the Module#include method brings the methods cout and endl into the file’s implicit top-level module.
Ruby’s IO class already defines a << instance method that backs the << operator, but you could always redefine it, as Ruby’s classes are open for modification:
class IO
def <<(value)
write(value) # calls IO#write
self
end
end
Ruby, another programming language inspired by Perl, can be made to support this syntax too:
Or, if you want to this syntax to be usable in multiple files:
In Ruby, methods can be called without parentheses, so methods with no parameters that are in scope act just like a Raku “term” as described in this post. In the above code, the
Module#include
method brings the methodscout
andendl
into the file’s implicit top-level module.Ruby’s
IO
class already defines a<<
instance method that backs the<<
operator, but you could always redefine it, as Ruby’s classes are open for modification: