> (>>);;
val it : (('a -> 'b) -> ('b -> 'c) -> 'a -> 'c)
то есть
(f >> g) x на самом деле
g(f(x))
и> (<<);;
val it : (('a -> 'b) -> ('c -> 'a) -> 'c -> 'b)
что преобразует
(f << g) x в
f(g(x))
Вроде всё просто и понятно. Пишем код.
let sorted = Seq.forall (fun (a,b) -> a <= b) << Seq.pairwise
Не катит, код сообщения такой.
Value restriction. The value 'sorted' has been inferred to have generic type val sorted : ('_a -> bool) when '_a :> seq<'_b> and '_b : comparison Either make the arguments to 'sorted' explicit or, if you do not intend for it to be generic, add a type annotation.
Зато всё превосходно работает вот так:
let sorted xs= Seq.forall (fun (a,b) -> a <= b) << Seq.pairwise <| xs
Данный факт меня крайне расстроил. Я не знаю как записать выражение в бесточечном стиле. Надеюсь что всё-таки я верблюд и чего-то не понимаю.
Комментариев нет:
Отправить комментарий