将计算添加到元组

时间:2017-10-26 19:58:24

标签: haskell

我有两个功能

somefunc:: (Floating a, Ord a) => (a, a) -> (a, a) -> a

pairs :: (Floating a, Ord a) =>[(a,a)] -> (a,a) -> [((a, a), a)]
pairs xs p = zip xs (map (somefunc p) xs)

我试图用一些函数进行计算并将其附加到每个元组。 我的代码编译,但是当我尝试像这样执行我的代码时

pairs [1,1] (1,1)

我收到以下错误

<interactive>:49:1: error:
• Non type-variable argument in the constraint: Num (a, a)
  (Use FlexibleContexts to permit this)
• When checking the inferred type
    it :: forall a. (Num (a, a), Ord a, Floating a) => [((a, a), a)]

有人可以向我解释这个错误吗?

1 个答案:

答案 0 :(得分:3)

您将错误的类型添加到您的函数中

pairs [1,1] (1,1)

应为pairs [(1,1)] (1,1)

您收到的错误消息是因为编译器尝试将1(列表元素)转换为对??但未能这样做。