【问题标题】:Sum of two numbers with function in haskell在haskell中具有函数的两个数字的总和
【发布时间】:2017-03-30 20:49:44
【问题描述】:

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

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

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

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

【问题讨论】:

  • 因为您的问题格式不正确。考虑阅读how to ask a good question
  • 错误是?
  • 我建议阅读一些关于 haskell 语法的介绍。 Learn you a haskell.
  • 如果你想sum这些数字,为什么你的函数叫gcd

标签: haskell sum


【解决方案1】:

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

在你对 mygcd 的定义中:

mygcd c = a + b

除非在别处定义了ab,否则这将是一个错误。换言之,这些abc 与函数的类型注释中提到的abc 不同。类型注释中的那些仅指变量的类型

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

例如,如果你想要一个函数将两个数字相加,就这么简单:

addTwoNumbers a b = a + b

如果你把它加载到 GHCi 中,并用 :t addTwoNumbers 检查类型,你会看到推断的类型是 addTwoNumbers :: Num a =&gt; a -&gt; a -&gt; a

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

addTuple (a, b) = a + b

现在推断的类型将是addTuple :: Num a =&gt; (a, a) -&gt; a

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

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

【讨论】:

  • 请添加一些上下文并简要说明以上如何解决问题。
  • 你是对的。希望现在的答案更有帮助。
猜你喜欢
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
相关资源
最近更新 更多