
Hello, On chapter 7 of LYH there's an example of a user-defined operator .++ infixr 5 .++ (.++) :: List a -> List a -> List a Empty .++ ys = ys (x :-: xs) .++ ys = x :-: (xs .++ ys) which is used as follows let a = 3 :-: 4 :-: 5 :-: Empty let b = 6 :-: 7 :-: Empty a .++ b (:-:) 3 ((:-:) 4 ((:-:) 5 ((:-:) 6 ((:-:) 7 Empty)))) Following this the text reads: "Notice how we pattern matched on (x :-: xs). That works because pattern matching is actually about matching constructors. We can match on :-: because it is a constructor for our own list type ..." Source: http://learnyouahaskell.com/making-our-own-types-and-typeclasses#recursive-d... Is the operator :-: a constructor? I'm confused because the definition of :-: is not prefixed by the data keyword? - Olumide