Tôi đang chơi với this mã kata trong Haskell và tôi đã xem qua câu hỏi trong chủ đề.Lấy khoảng giữa Ix trong khoảng thời gian O (1) trong Haskell
Điều quan trọng để tìm điểm giữa của mảng có chỉ mục là giá trị số, nhưng chỉ mục mảng của Haskell có thể là bất kỳ trường hợp nào của typeclass Ix, bao gồm, ví dụ, tuple (Int, Word, Card) là một thể hiện của Ix nhưng không phải của Num.
Một cách để lấy điểm giữa của mảng là truy vấn chiều dài của nó, truy vấn danh sách chỉ mục và thả một nửa danh sách đó, nhưng điều này yêu cầu thời gian O (n).
Có ai biết cách lập chỉ mục để làm điều đó trong thời gian không? Tôi cảm thấy như có nên có một, kể từ khi một phạm vi Ix là vụ phải biject với một phạm vi số nguyên.
Nếu có thực sự tồn tại một song ánh, thì tại sao không lập bản đồ đến số nguyên, tính toán điểm giữa và sau đó đi ngược lại để ánh xạ nó trở lại loại chỉ số của bạn ? Tôi không biết loại cơ chế nào sẽ cho phép điều này trong Haskell, nhưng có vẻ như có thể? – Gian
Hàm 'index' trong lớp' Ix' là một phần của sự đánh dấu, lập chỉ mục các chỉ số tới số nguyên, nhưng một số khác bị thiếu, theo như tôi có thể nói. – yatima2975