Đoạn nào của lý thuyết loại phụ thuộc Martin-Löf có thể được thể hiện bằng cách sử dụng các kiểu chung trong Java?


8

Gần đây tôi đã nhận ra rằng một số các vấn đề tôi đã có một vài năm trước đây cố gắng thực hiện các lý thuyết toán học khác nhau trong Java đi xuống đến một thực tế rằng hệ thống đánh máy trong Java là không đủ mạnh để mô hình tất cả các Martin-LOF lý thuyết loại phụ thuộc .

Trước Java 5 và Generics, nhập những lý thuyết bạn có thể làm là thông qua các lớp học và giao diện, trong đó cung cấp cho bạn các loại tùy ý xây dựng ra các loại đất int, double, charvà vân vân sử dụng các loại sản phẩm và chức năng. Bạn cũng có thể xây dựng các kiểu đệ quy như Lists, mặc dù không theo cách thống nhất.

Sử dụng thuốc generic, bạn có thể làm nhiều hơn một chút. Bây giờ bạn có thể định nghĩa List<T>là một hàm Loại và do đó chúng tôi nhận được các loại thứ tự cao hơn.

TypeType

Đây không phải là kết thúc của câu chuyện, mặc dù. Sử dụng một mẹo chung, chúng ta có thể mô hình hóa một số loại sản phẩm phụ thuộc. Ví dụ: chúng ta có thể định nghĩa các loại có dạng bằng cú pháp

T:Typef(T)
public interface f<T extends f<T>>
{
  // We can now refer to T as much as we like
  // inside the class.  T has type f<T>.
}

Ví dụ, chúng ta có thể mô hình hóa cấu trúc cơ bản của một monoid (nhưng không phải là điều kiện đơn vị và đơn vị) bằng cách sử dụng thuật ngữ loại (nghĩa là một bộ T có chỉ định phần tử đơn vị và một hoạt động nhị phân trên T

T:TypeT×(TTT)
TT ). Sử dụng chung chung Java, chúng ta có thể mô hình hóa loại này:
public interface MonoidElement<T extends MonoidElement<T>>
{
  public T unit();

  public T mul(T op1, T op2);
}

Tuy nhiên, khi chúng ta cố gắng mô hình hóa các khái niệm phức tạp hơn, lý thuyết loại bị phá vỡ.

Có một mô tả đơn giản về đoạn MLTT tương ứng với các loại có thể được xây dựng trong hệ thống gõ Java không?

Câu trả lời:


12

T.T×(TTT)n:NatMatrix(n,n+1)b:Boolif b then Nat else Bool

F<:ω(TypeType)TyperunSTa.(s.ST s a)a

F<:F<:λλ2λPωλωω


Không chắc những quan niệm sai lầm là gì, nhưng cảm ơn - điều này đã trả lời khá nhiều câu hỏi của tôi.
John Gowers
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.