Вернуть строку со всеми символами в верхнем регистре - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь написать функцию, которая возвращает строку со всеми символами в верхнем регистре, используя прямую композицию.

Вот мой код без прямой композиции:

let toUpper s = String.map System.Char.ToUpper s

А здесьмоя попытка использовать форвардную композицию:

let toUpper2 s = s >> Seq.map System.Char.ToUpper >> Seq.map string >> String.concat ""

Я заставил ее работать с pipe-forwards, но не могу заставить ее работать с форвардной композицией.Любая помощь приветствуется!

1 Ответ

0 голосов
/ 04 марта 2019

Эти два эквивалента:

let toUpper1   =      Seq.map System.Char.ToUpper >> Seq.map string >> String.concat ""
let toUpper2 s = s |> Seq.map System.Char.ToUpper |> Seq.map string |> String.concat ""

, но есть проблема с toUpper1.Он является общим и вызывает проблемы в языках ML:

Проверка типов: ограничение значения.Значение 'toUpper1' было выведено, чтобы иметь универсальный тип val toUpper1: ('_a -> string), когда' _a:> seq Либо сделать аргументы для 'toUpper1' явными, либо, если вы не намереваетесь сделать его универсальным,добавьте аннотацию типа.

, поэтому требуется аннотация типа:

let toUpper1 : string -> string = Seq.map System.Char.ToUpper >> Seq.map string >> String.concat ""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...