我想得到3个数字的输入,并作为输出多个结果.
我的代码:
t :: Integer -> Integer -> Integer -> (Integer,Integer,Integer)
t a b c = ((a+b)/2,(a+b+c)/3,(b+c)/2)
Run Code Online (Sandbox Code Playgroud)
但这似乎是一个问题:
Lab2.hs:17:17:
No instance for (Fractional Integer) arising from a use of `/'
Possible fix: add an instance declaration for (Fractional Integer)
In the expression: (a + b) / 2
In the expression: ((a + b) / 2, (a + b + c) / 3, (b + c) / 2)
In an equation for `t':
t a b c = ((a + b) / 2, (a + b + c) / 3, (b + c) / 2)
Failed, modules loaded: none.
Run Code Online (Sandbox Code Playgroud)
问题是多重输出或我试图做的分歧......
(/) 有以下类型:
(/) :: Fractional a => a -> a -> a
Run Code Online (Sandbox Code Playgroud)
Integer不是一个实例Fractional.毕竟,将整数除以整数的结果可能不是整数(例如3/2).
你想用div:
div :: Integral a => a -> a -> a
Run Code Online (Sandbox Code Playgroud)
这Integer是有效的Integral(通过使用检查:info Integer).您可以使用中缀表示法来保持清晰:
(a + b) `div` 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |