两个数字的总和,函数在哈斯克尔



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

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

如果你能帮助我,我将不胜感激!

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

在你对mygcd的定义中:

mygcd c = a + b

除非在其他地方定义了ab,否则这将是一个错误。换句话说,这些abc与函数的类型注释中提到的abc不同。类型注释中的变量仅引用变量的类型

如果令人困惑,您可以省略类型注释,让编译器为您确定它。

例如,如果你想让一个函数将两个数字相加,它就像这样简单:

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)

最新更新