Haskell 正确使用fromIntegral和不匹配的括号

Haskell 正确使用fromIntegral和不匹配的括号,haskell,Haskell,总是收到不正确的缩进或不匹配的括号的消息。甚至试图省略where结构的变量。此外,我不确定我是否正确执行了声明和fromIntegral您需要缩进防护装置,而不是缩进周围的上下文(在本例中是def)。您还存在一些类型错误,大多数错误可以通过自由地应用from integral来处理。我发现的另一件显而易见的事情是,00不是三元组——也许你的意思是(0,0,0)?但如果你这样做了,第二条似乎无论如何都会返回这个结果;所以也许你根本不需要任何警卫 您也可以考虑将类型更改为 DEF::double >

总是收到不正确的缩进或不匹配的括号的消息。甚至试图省略where结构的变量。此外,我不确定我是否正确执行了声明和fromIntegral

您需要缩进防护装置,而不是缩进周围的上下文(在本例中是
def
)。您还存在一些类型错误,大多数错误可以通过自由地应用
from integral
来处理。我发现的另一件显而易见的事情是,
00
不是三元组——也许你的意思是
(0,0,0)
?但如果你这样做了,第二条似乎无论如何都会返回这个结果;所以也许你根本不需要任何警卫


您也可以考虑将类型更改为<代码> DEF::double > double >(double,double,double),并将其留给调用方来处理从<代码> int >代码>转换为<代码> double < /代码>,尽管这是一种设计选择,很大程度上取决于

def
的含义及其在更大系统中的作用。

您需要缩进防护装置,而不是缩进周围的上下文(在本例中是
def
)。您还存在一些类型错误,大多数错误可以通过自由地应用
from integral
来处理。我发现的另一件显而易见的事情是,
00
不是三元组——也许你的意思是
(0,0,0)
?但如果你这样做了,第二条似乎无论如何都会返回这个结果;所以也许你根本不需要任何警卫


您也可以考虑将类型更改为<代码> DEF::double > double >(double,double,double),并将其留给调用方来处理从<代码> int >代码>转换为<代码> double < /代码>,尽管这是一个设计选择,它在很大程度上取决于

def
的含义及其在更大系统中的作用。

谢谢您的回答。我试着把警卫往右边缩进,但没用。当x和y=0时,应给出0,0,0,0。甚至可以使用逗号吗?逗号是元组构造的一部分,因此需要它们来构造元组。显然,声明def::(Int,Int)->(Int,Int,Int)是不正确的。但我希望结果是整数。我该怎么做?@letter有函数
圆形、地板、天花板::Double->Integer
。也许其中一个能满足你的需要。谢谢你的回答。我试着把警卫往右边缩进,但没用。当x和y=0时,应给出0,0,0,0。甚至可以使用逗号吗?逗号是元组构造的一部分,因此需要它们来构造元组。显然,声明def::(Int,Int)->(Int,Int,Int)是不正确的。但我希望结果是整数。我该怎么做?@letter有函数
圆形、地板、天花板::Double->Integer
。也许其中一个能满足你的需要。
def :: (Int, Int) -> (Int, Int, Int)
def (x, y) 
| x == 0 && y == 0  = (0, 1, 0)
| otherwise = ( fromIntegral x/34, y, a )
  where a = x + y