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?请添加一些上下文,并简要说明上面的方法是如何解决这个问题的。你是对的。希望现在的答案更有帮助。