Можно ли использовать оператор конвейера в F # для передачи аргумента в конструктор?

Этот код переворачивает строку:

let reverse (s : string) = new string(s.ToCharArray() |> Array.rev)

Можно ли это переписать с помощью оператора конвейера, чтобы передать требуемый аргументstring() конструктор? Например, это кажется более идиоматическим:

// Doesn't compile:
let reverse (s : string) = s.ToCharArray() |> Array.rev |> new string

Точно так же, почему я не могу использоватьstring оператор следующим образом?

let reverse2 (s : string) = s.ToCharArray() |> Array.rev |> string

Вот оно в действии:

> reverse2 "foo" ;;
val it : string = "System.Char[]"

Возвращает тип, а не «oof».

Ответы на вопрос(2)

Ваш ответ на вопрос