2012-05-02 22 views
6

Tôi đã tự hỏi về khai báo cá thể Ord cho (a,b) và tôi muốn tìm kiếm nhanh chóng để xác nhận trực giác của mình rằng so sánh đầu tiên là a và sau đó, trong trường hợp bình đẳng, trên b. Cụ thể tôi đã đi here. Kể từ khi hackage có liên kết đến mã nguồn cho khai báo dữ liệu và chức năng, tôi giả định rằng cũng sẽ có mã nguồn cho khai báo dụ, nhưng tôi không thể tìm thấy chúng. Có lý do tại sao họ không có ở đó, hoặc có tôi chỉ nhìn không đủ cứng? type Answer = Either Explanation Directions :)Mã nguồn cho khai báo cá thể kiểu chữ tiêu chuẩn

+3

Có một vé mở để [thêm liên kết nguồn cho các trường hợp] (http://trac.haskell.org/haddock/ticket/145) trong Haddock, điều này sẽ giúp việc tìm kiếm các bản sao dễ dàng hơn nhiều. – hammar

+0

Cảm ơn rất nhiều. Tất cả các câu trả lời hay, mỗi câu trả lời đều có thêm một chút thông tin giúp họ nổi bật so với những người khác. – Boris

Trả lời

4

Các Ord dụ cho các bộ is derived, theo các quy tắc từ đặc tả ngôn ngữ, mà đi lại as far as Gofer.

instance (Eq a, Eq b) => Eq (a,b) where 
    (x,y) == (u,v) = x==u && y==v 

instance (Ord a, Ord b) => Ord (a,b) where 
    (x,y) <= (u,v) = x<u || (x==u && y<=v) 
4

Các Haskell 98 Báo cáo định này in section 10.1:

Các phương pháp lớp tự động được giới thiệu bởi các trường hợp có nguồn gốc của Eq và Ord là (==), (/ =), so sánh, (<) , (< =), (>), (> =), max và min. Bảy toán tử thứ hai được định nghĩa để so sánh các đối số theo từ điển đối với bộ tạo dựng, với các hàm tạo trước đó trong khai báo kiểu dữ liệu là nhỏ hơn các số sau.

So sánh có nguồn gốc luôn luôn vượt qua các nhà thầu từ trái sang phải.

...

Mọi hoạt động có nguồn gốc của lớp Eq và Ord đều nghiêm ngặt trong cả hai đối số.

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