#!/usr/bin/ruby

#
## Hash cyclic reference
#

var h = Hash(foo => 0, bar => [0,1])
h{:baz} = h
say h;

#
## Tree cyclic reference
#

var t = h.as_tree('root')
say t

#
## Array cyclic reference
#

var a = [1,2,3,4]
a[2] = a
say a

#
## Triple cyclic references
#

var a2 = [1,[2,3],4]

a2[3] = a2
a2[4] = a
a2[1][2] = a2[1]

say a2

#
## Mutual cyclic references
#

a[4] = h
h{:quix} = a

say h

#
## Pair cyclic reference
#

var p = Pair(1, 2)
p.second = p
say p