I am attempting to create a data type, Point, that takes three numbers for its constructor. Initially, I had written
Point
data Point = Point Double D
You can use GADT to specify the constraint:
{-# Language GADTs #-} data Point a where Point :: (Num a) => a -> a -> a -> Point a