这里是一个函数,一对积分 值和将其划分:如何划分一对Num值?
divide_v1 :: Integral a => (a, a) -> a
divide_v1 (m, n) = (m + n) `div` 2
我调用函数有一对积分 值,它按预期工作:
divide_v1 (1, 3)
大。如果我的数字总是积分,那就完美了。
这里是一个函数,一对分数 值和将其划分:
divide_v2 :: Fractional a => (a, a) -> a
divide_v2 (m, n) = (m + n)/2
我调用函数有一对分数 值,它按预期工作:
divide_v2 (1.0, 3.0)
太好了。如果我的数字总是Fractionals,那就完美了。
我想的作品无论 号是否是积分还是小数形式的函数:
divide_v3 :: Num a => (a, a) -> a
divide_v3 (m, n) = (m + n) ___ 2
应怎样使用运营商_?
请注意,'div'和'/'做_genuinely different_的事情,这就是为什么他们有不同的名称。没有办法实现'/'并且保持Integral数据类型,除非你想要一个错误的世界。哈斯克尔通过在写作之前让你思考并决定你真正想要的东西来做正确的想法。我认为你应该能够决定你是否想要Int,Integer,Rational,Double或其他。如果你试图做一些通用的事情,重新考虑是否真的可以一般地对待分工。 – AndrewC