¿Cómo creo una función F # con un argumento de registro de estilo printf?

Estoy tratando de crear un marco para procesar algunos archivos y datos. La única área con la que estoy luchando es cómo proporcionar una función de registro al marco, permitiendo que el marco informe mensajes sin tener ningún conocimiento del registro en uso.

let testLogger (source:seq<'a>) logger =
    logger "Testing..."
    let length = source |> Seq.length
    logger "Got a length of %d" length


let logger format = Printf.kprintf (printfn "%A: %s" System.DateTime.Now) format
testLogger [1; 2; 3] logger

Idealmente quiero que este código funcione, pero no puedo entender cómo pasar la función de registrador.

Respuestas a la pregunta(2)

Su respuesta a la pregunta