Hi, I’ve played a little bit around in the repl to understand the difference between the compose operator >> vs the forward pipe operator |>. Not from a usage perspective, but from the highlighted in bold difference in their type signatures. Why don’t they boil down to the same signature. What does the parenthesis really mean, searching the documentation it appears to be the signature of a HOF, and if that’s the case, why is *add1* not a reported as such when it works. Can anyone elaborate on the differece - if any - on *add1* and *add2*. Many thanks. Z.

let add x y = x+y;;

val add : x:int → y:int → int

let add1 x = x |> add 3 |> add 2;;

val add1 :x:int → int

let add2 = add 3 >> add 2;;

val add2 :(int → int)

let applyHOF f x = f x;;

val applyHOF : f:('a → 'b) → x:'a → 'b

applyHOF add1 3;;

val it : int = 8

applyHOF add2 3;;

val it : int = 8