阅读Numeric.LinearProgramming
时,我被类型声明弄糊涂了
data Bound x = x :<=: Double
| x :>=: Double
| x :&: (Double, Double)
| x :==: Double
| Free x
deriving Show
假设我们输入Int
来代替x
。那么类型为Bound Int的成员将类似于Int :&: (1.2345 :: Double)
。但Int
是一种类型,可能不是数据构造函数的有效名称/标识符。这是怎么回事?
在本例中,x
不是数据构造函数,而是:&:
、:<=:
、:>=:
、:==:
和Free
。除了Free
之外,这些都是中缀数据构造函数。最著名的例子是列表"append"运算符:
。