【发布时间】:2018-04-30 10:36:17
【问题描述】:
我知道一些无意义的代码,但试图在我的脑海中留下类型类等等。
问题:如何去掉下面函数中的括号?如果我在任何地方使用它,'$' 会引发错误。
data Vector = Vector XY XY deriving (Show)
data XY = XY (Float , Float) deriving (Show)
vector (Vector (XY (x1,y1)) (XY(x2,y2))) = [(x1,y1),(x2,y2)]
【问题讨论】:
-
你只能在表达式中使用
$,因为$并不是真正的Haskell语法。它是一个运算符,基本上是一种“欺骗” Haskell 添加括号本身的方法。 -
我还看不出你想在哪里摆脱它。您可以与
XY的内容进行模式匹配,而不是解包元组(这可以更有效),您还可以删除deriving的括号,因为您只派生自一个类型类,并且您可以定义一个pattern. -
除非您打算在
XY类型中添加一些实例(在这种情况下,newtype比data更合适),您可以将XY设为type同义词并为自己节省一些括号 -vector (Vector (x1,y1) (x2,y2)) = [(x1,y1),(x2,y2)]. -
清除!感谢您的解释。更进一步!
-
您的代码中没有任何类型类;
Vector和XY只是类型。
标签: haskell brackets reduction