Tôi đang gặp khó khăn khi tìm cách chia danh sách Ints thành một bộ chứa hai danh sách mới, sao cho mọi thành phần (bắt đầu bằng danh sách đầu tiên) vào danh sách đầu tiên yếu tố khác trong giây.Haskell: Tách danh sách thành tuple của hai danh sách mới
Giống như vậy:
split [] = ([],[])
split [1] = ([1],[])
split [1,2] = ([1],[2])
split [1,2,3] = ([1,3],[2])
split [1,2,3,4] = ([1,3],[2,4])
Tôi đang cố gắng để thực hiện điều này một cách đệ quy (với lính gác) và chỉ sử dụng các xs đối số duy nhất
Đây là cách tiếp cận của tôi mà giữ nhận thông báo lỗi:
split :: [Int] -> ([Int],[Int])
split xs | length(xs) == 0 = ([],[])
| length(xs) == 1 = (xs !! 0 : [],[])
| length(xs) == 2 = (xs !! 0 : [], xs !! 1 : [])
| otherwise = (fst ++ xs !! 0, snd ++ xs !! 1) ++ split(drop 2 xs))
Cảm ơn các bạn! – Shabu
Bạn nên chấp nhận một trong các câu trả lời. –