namespace Frduino.Genlet.For_lib.Double

open Stdlib.Asyncseq
open Frduino
open Frduino.Genlet
open Frduino.Lib.Unsafe

type Builder() =
interface Lib.Double.Builder with
override __.return_ x =
new CodeExpr<double>(x = x, n = sprintf "%f" x)

override __.from_any<'Caster, 'T, 'a when 'Caster :> Caster<'T>> (x: 'a expr) =
let x = x :?> CodeExpr<'a>
new CodeExpr<'T>(n = $"(double)({x.n})")