Function fungi_lang::bitype::unroll_type [] [src]

pub fn unroll_type(typ: &Type) -> Type

Unroll a rec type, exposing its recursive body's type structure.

Example 1:

unroll_type(rec a. 1 + a)
= 1 + (rec a. 1 + (rec a. 1 + a))

Example 2:

unroll_type(rec a. (+ 1 + a + (x a x a)))
= (+ 1
+ (rec a. 1 + a + (x a x a))
+ (x (rec a. 1 + a + (x a x a)) x (rec a. 1 + a + (x a x a)))
)