首页 > 解决方案 > 类型参数作为数据/值构造函数

问题描述

通读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). ButInt是一种类型,并且可能不是数据构造函数的有效名称/标识符。这里发生了什么?

标签: haskell

解决方案


在这个例子中,x不是数据构造函数,而是:&:, :<=:, :>=:, :==:, 和Free。除此之外Free,这些都是中缀数据构造函数。最著名的例子是列表“追加”运算符,:.


推荐阅读