Skip to content
Updated Home (markdown) authored by Daniel Șuteu's avatar Daniel Șuteu
......@@ -748,8 +748,8 @@ say $^SIDEF # prints the path to sidef executable
This constants look like variables, but are actually file-handles.
```ruby
STDERR.print("Some error!")
STDOUT.print("Some output...")
STDERR.say("Some error!")
STDOUT.say("Some output...")
STDIN.readline() # reads a line from the standard input
```
......@@ -759,7 +759,7 @@ Here is the implementation of a very basic `cat`-like program:
```ruby
ARGF.each { |line|
print line
say line
}
```
......@@ -1041,7 +1041,7 @@ func factorial (n) {
say factorial(5); # prints: 120
```
Anonymous functions:
Anonymous recursion can be achieved by using the `__FUNC__` keyword, which refers to the current function:
```ruby
func recmap(repeat, seed, transform, callback) {
......@@ -1054,6 +1054,21 @@ func recmap(repeat, seed, transform, callback) {
recmap(6, "0", func(s) { s + s.tr('01', '10') }, func(s) { say s })
```
Additionally, the `__BLOCK__` keyword can be used for referring to the current block:
```ruby
func fib(n) {
return NaN if (n < 0)
{|n|
n < 2 ? n
: (__BLOCK__(n-1) + __BLOCK__(n-2))
}(n)
}
say fib(12) #=> 144
```
Storing functions in variables:
```ruby
......
......