haskell函数中两个数的和

haskell函数中两个数的和,haskell,sum,Haskell,Sum,我是想学习哈斯克尔的初学者!我想做一个函数,它有两个输入参数和一个输出参数!函数的任务是将两个数字相加并返回结果!这是我的代码,但它给出了一个错误 mygcd :: (a , b) -> c mygcd c = a + b main = do a <- readLn b <-readLn print $ mygcd (a , b) mygcd::(a,b)->c mygcd c=a+b main=do a我认为您可能会混淆类型注释中使用的类型变量,以及传递给函数的实际值

我是想学习哈斯克尔的初学者!我想做一个函数,它有两个输入参数和一个输出参数!函数的任务是将两个数字相加并返回结果!这是我的代码,但它给出了一个错误

mygcd :: (a , b) -> c 
mygcd c = a + b 

main = do
a <- readLn
b <-readLn
print $ mygcd (a , b)
mygcd::(a,b)->c
mygcd c=a+b
main=do

a我认为您可能会混淆类型注释中使用的类型变量,以及传递给函数的实际值

在您对mygcd的定义中:

mygcd c = a + b
除非在别处定义了
a
b
,否则这将是一个错误。换句话说,这些
a
b
c
与函数的类型注释中提到的
a
b
c
不同。类型注释中的类型仅指变量的类型

如果混淆,您可以省略类型注释,让编译器为您确定

例如,如果您想要一个函数添加两个数字,其简单程度如下:

addTwoNumbers a b = a + b
如果您将其加载到GHCi中,并使用
:t addTwoNumbers
检查该类型,您将看到推断的类型是
addTwoNumbers::Num a=>a->a->a

如果希望函数添加元组的内容,可以将定义更改为

addTuple (a, b) = a + b
现在推断出的类型将是
addTuple::Num a=>(a,a)->a

mygcd :: Num a => (a, a) -> a
mygcd (a, b) = a + b 

main = do
  a <- readLn
  b <- readLn
  print $ mygcd (a, b)
mygcd::Num a=>(a,a)->a
mygcd(a,b)=a+b
main=do

a你的问题形式很差。考虑阅读和错误是什么?我建议阅读Haskell语法的一些介绍。如果你想对这些数字求和,为什么你的函数叫gcd?请添加一些上下文,并简要说明上面的方法是如何解决这个问题的。你是对的。希望现在的答案更有帮助。