spec: format — CL-style string formatting (~a ~s ~d ~x ~o ~b ~f ~% ~& ~~ ~t)
28 tests, passes on both JS and OCaml. - spec/stdlib.sx: pure SX format function - spec/primitives.sx: format primitive declaration - lib/r7rs.sx: fix number->string to support optional radix arg - hosts/ocaml: add format-decimal primitive, load stdlib.sx in test runner - hosts/javascript: load stdlib.sx in test runner Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2806,6 +2806,13 @@ let () =
|
||||
match args with
|
||||
| [v] -> String (sx_display_val v)
|
||||
| _ -> raise (Eval_error "display-to-string: 1 arg"));
|
||||
register "format-decimal" (fun args ->
|
||||
match args with
|
||||
| [Integer n; Integer prec] -> String (Printf.sprintf "%.*f" prec (float_of_int n))
|
||||
| [Number n; Integer prec] -> String (Printf.sprintf "%.*f" prec n)
|
||||
| [Integer n; _] -> String (Printf.sprintf "%.6f" (float_of_int n))
|
||||
| [Number n; _] -> String (Printf.sprintf "%.6f" n)
|
||||
| _ -> raise (Eval_error "format-decimal: expected number precision"));
|
||||
register "current-input-port" (fun _ -> Nil);
|
||||
register "current-output-port" (fun _ -> Nil);
|
||||
register "current-error-port" (fun _ -> Nil);
|
||||
|
||||
Reference in New Issue
Block a user