data Maybe bmeans that the type is generic and that bis a variable of generic type.
Just bdoes indicate that one way to create a value Maybe bis to provide a type value b.
Prelude> Just "foo"
Just "foo"
Prelude> Just 42
Just 42
Just "Foo" Maybe String, type b String. Haskell .
, , Just 42, , :
Prelude> :t Just 42
Just 42 :: Num a => Maybe a
, Maybe a, a Num. , "".
( , data Int, ...)