Trying to do a simple pattern Matching with variants that will give me the in order concat of binary tree node strings, but getting an error in the recursive implementation:

type btnode =
  | Leaf
  | Node of string * btnode * btnode

let rec inorder bt = function
  | Leaf -> ""
  | Node(s, left, right) -> 
    (inorder left) ^ s ^ (inorder right)
let tree = inorder Node("a", Node("b", Leaf, Leaf), Leaf)

Error: This expression has type btnode -> string
but an expression was expected of type string