On the topic of tail calls in .NET Let's say you have implemented a small data pipeline library to replace LINQ. module TrivialStream = type Receiver<'T> = 'T -> unit type Stream<'T> = Receiver<'T> -> unit module Details =