Browse thread
[Caml-list] Passing printf format strings to functions
- Erik de Castro Lopo
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Erik de Castro Lopo <ocaml-erikd@m...> |
| Subject: | [Caml-list] Passing printf format strings to functions |
Hi all,
I've got a little problem which I can't seem to get to the
bottom of. The following code snippet won't compile:
let rec print_string_pairs (fmt:string) =
function
[] -> print_endline ""
| a :: b ->
Printf.printf fmt (fst a) (snd a) ;
print_string_pairs fmt b
;;
let fmt = Printf.sprintf " %%%ds == %%s\n" 20 ;;
print_endline fmt ;;
let pairs = [ ("a", "b") ; ("c", "d") ; ("e", "f") ] ;;
print_string_pairs fmt pairs ;;
and it gives me an error (line 5 is the Printf.printf line):
File "fmt.ml", line 5, characters 18-21:
This expression has type string but is here used with type
('a -> 'b -> 'c, out_channel, unit) format =
('a -> 'b -> 'c, out_channel, unit, unit) format4
If I replace "fmt" on that line with
Printf.printf "%s %s\n" (fst a) (snd a) ;
there is no problem. I think this is something to do with type
inferencing of format strings but I can't get to the bottom
of it.
Any suggestions?
TIA,
Erik
--
+-----------------------------------------------------------+
Erik de Castro Lopo nospam@mega-nerd.com (Yes it's valid)
+-----------------------------------------------------------+
"Using Java as a general purpose application development language
is like going big game hunting armed with Nerf weapons."
-- Author Unknown
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners