List.map myPrint ["first"; "second"; "third;"]
Вернет новый список sprintf'ed ...
Чтобы просто распечатать на консоль ... List.iter будет перебирать функцию по каждому значению в списке и выполнять эту функцию - но будет работать только с функциями, которые не возвращают значение. (т.е. printf ...)
Карта принимает 'T ->' U - и преобразует список любого формата в любой другой
Итак
let myPrint in = sprintf "%s" in
будет разрешено, но прочитайте ваш вопрос еще раз - он не делает то, что вы хотите.
- вы можете использовать mapi, который добавляет индекс в (int -> 'T ->' U) и позволит вам определить myPrint как
let myPrint index val = sprintf "%d : %s" index val
Что вернет ["1: первый"; «2: второй»; «3: третий»], который становится ближе ...
Но похоже, что вы хотите вернуть одну строку - так что либо в String.Join на выходе этого - либо используйте fold:
let final = List.fold (fun (builder, index) in -> builder.AppendFormat("{0}: {1}", index, in), index + 1) (new StringBuilder()) ["first"; "second"; "third"]