具有haskell功能的两个数字的总和

时间:2017-03-30 20:49:44

标签: haskell sum

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

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

main = do
a <- readLn
b <-readLn
print $ mygcd (a , b)

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

1 个答案:

答案 0 :(得分:0)

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

在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)