2015-11-04 53 views
6

我是Haskell的新手,试图从我的书中运行以下示例代码:Haskell错误:约束中的非类型变量参数:Num(a - > a - > a - > a)

整个文件:

-- my name 

splitAt1 :: [a] -> ([a], [a]) 
splitAt1 xs = (take 2 xs, drop 2 xs) 

我通过运行线测试:

splitAt1 [1 2 3 4] 

的想法是,在输入阵列的索引2。然而在分成两个阵列,我正在以下错误:

Non type-variable argument 
    in the constraint: Num (a -> a -> a -> a) 
(Use FlexibleContexts to permit this) 
When checking that ‘it’ has the inferred type 
    it :: forall a a1 a2 a3. 
     (Num a1, Num a2, Num a3, Num (a1 -> a2 -> a3 -> a)) => 
     ([a], [a]) 

任何人都可以帮助我解码错误信息,也许有什么问题的代码?

+1

是所有的代码?什么版本的GHC?似乎无法在这里重现:http://rextester.com/YLAV57098 –

+0

是的,那就是所有的代码。它是版本7.10.2。 – jblakeley

+1

该代码适用于7.10.2。你可能会粘贴你的整个文件? – Sibi

回答

14

该函数没问题,这是你的论点。

尝试splitAt1 [1,2,3,4]而不是splitAt1 [1 2 3 4]它应该工作。

相关问题