(* Adjacent type declarations are mutually recursive *)
type T = S
type S = [ (Char | T)* ]
let x : S = [ 'abc' ['def'] 'ghi' ]
(* Similarly for toplevel function definitions *)
let f (x : Int) : Int = g x
let g (x : Int) : Int = 3
let a = 2
let h (x : Int) : Int = f x
(* f and g are mutually recursive, but they cannot use h *)