2015-11-04 19 views
6

Tôi mới dùng Haskell và đang cố gắng chạy mã ví dụ sau từ sách của mình:Haskell Lỗi: Không đối số biến-biến trong ràng buộc: Số (a -> a -> a -> a)

toàn bộ file:

-- my name 

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

tôi đang thử nghiệm bằng cách chạy dòng:

splitAt1 [1 2 3 4] 

ý tưởng được rằng mảng đầu vào được chia thành hai mảng ở chỉ số 2. Tuy nhiên, tôi nhận được lỗi sau:

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]) 

Có ai giúp tôi giải mã thông báo lỗi và có thể có gì sai với mã không?

+1

Đó là tất cả mã? Phiên bản GHC nào? Có vẻ như không thể tái tạo ở đây: http://rextester.com/YLAV57098 –

+0

Vâng, đó là tất cả mã. Đây là phiên bản 7.10.2. – jblakeley

+1

Mã hoạt động tốt cho tôi với 7.10.2. Bạn có thể dán toàn bộ tập tin của mình không? – Sibi

Trả lời

14

Chức năng là tốt, đó là đối số của bạn tắt.

Hãy thử splitAt1 [1,2,3,4] thay vì splitAt1 [1 2 3 4] và nó sẽ hoạt động.

Các vấn đề liên quan