Ý nghĩa của vị trí tích cực của người Viking và vị trí tiêu cực của người Viking trong lý thuyết loại?


10

"Ở vị trí tích cực" và "ở vị trí tiêu cực" nghĩa là gì trong bối cảnh của lý thuyết loại?

Điều duy nhất tôi hiểu từ bài đăng trên blog của Bob Harper về chủ đề này là có một mối liên hệ giữa sự phân cực theo nghĩa này trong lý thuyết loại và sự phân cực trong logic, nhưng tôi không biết mối liên hệ đó là gì.

Câu trả lời:


9

Thật không may "phân cực" là một khái niệm hơi quá tải trong lý thuyết loại. "Vị trí tích cực" và "vị trí tiêu cực" đề cập đến một khái niệm khác về cực tính so với những gì Bob nói về việc tập trung / phân cực.

Ý nghĩa của bạn

Khi bạn xác định loại quy nạp, bạn đưa ra một loạt quy tắc tương ứng với các thao tác cho loại bạn đang xác định. Ví dụ, bạn có thể nói a Natlà một cái gì đó với

  • một giá trị zero : Nat
  • một chức năng suc : Nat -> Nat

Và sau đó mong đợi rằng Natcó chứa tất cả các giá trị có thể được tạo ra từ việc áp dụng nhiều lần succho các Nats khác và bao gồm zero. Để phù hợp với cấu trúc quy nạp này, chúng ta có một nguyên tắc đệ quy trên Natcác s hoạt động dựa trên thực tế là bất kỳ Natđược tạo bởi các nhà xây dựng đó.

rec : A -> (A -> A) -> Nat -> A

vậy nên

rec Z S zero = zero
rec Z S (suc n) = S (rec Z S n)

Tuy nhiên, có một số hạn chế về những gì chúng ta có thể viết như các quy tắc. Mặt khác, chúng ta có thể viết ra một loạt các quy tắc mà nguyên tắc đệ quy không thể được biện minh. Xem xét "loại quy nạp" Dvới một hàm tạo

  • d : (D -> D) -> D

Ở đây không có một nguyên tắc đệ quy lành mạnh ở đây. và vì lý do tốt! Nếu chúng ta có một số nguyên tắc đệ quy, chúng ta có thể sử dụng nó để mã hóa một phiên bản của ứng dụng tự và với nó, không có lỗi. Điều này có nghĩa là Dkhông thể được gọi là "quy nạp" bởi vì các loại quy nạp là các cấu trúc hữu hạn được tạo ra từ các nhà xây dựng áp dụng nhiều lần!

Để giải quyết vấn đề này, chúng tôi hạn chế cách các loại quy nạp có thể được đệ quy trong lý thuyết loại. Cụ thể, chúng tôi ngăn chúng xuất hiện ở "những nơi tiêu cực". Đây là khái niệm về sự phân cực mà bạn đang nói đến. Do đó, cực tính của một vị trí được xác định,

  1. Đối số bắt đầu ở một vị trí tích cực
  2. Mỗi khi chúng ta đi sang bên trái một mũi tên, cực sẽ lật

Vì vậy, Xlà tích cực trong hai đầu tiên và tiêu cực trong hai thứ hai

X
Int -> X
X -> Int
(Unit -> X) -> Int

Ý tưởng này là hợp lý với một sự đòi hỏi đối với lý thuyết thể loại trong đó một loại quy nạp mà chỉ có tái phát là tích cực sẽ dẫn đến một functor covariant. Các chi tiết về cách thức này hoạt động và tại sao nó thú vị một chút dài.

Ý nghĩa của Bob Harper

Trong blog của mình, Harper đã nói về một ý nghĩa khác của sự phân cực. Phân cực này là tham chiếu đến cách các kết nối khác nhau trong logic được đưa ra ý nghĩa. Cụ thể, chúng ta có thể phân loại các kết nối theo hai cách

  • Kết nối tích cực có thể được xác định bằng cách xác định cách giới thiệu chúng (quy tắc giới thiệu của chúng)
  • Kết nối phủ định có thể được xác định bằng cách xác định cách sử dụng chúng (quy tắc loại bỏ của chúng)

Trong thuật ngữ ngôn ngữ lập trình, điều này độc đáo nắm bắt sự phân biệt giữa các loại lười biếng và nghiêm ngặt. Một loại nghiêm ngặt được xác định bởi các giá trị của nó. Một người lười biếng được định nghĩa bằng cách làm thế nào mô hình có thể phù hợp với họ. Để xử lý vấn đề này một cách chính xác, chúng tôi xác định một ngôn ngữ có 2 cấu trúc chính, cách xây dựng các loại tích cực và "gai" để phân tách các loại tiêu cực. Chúng ta có thể sử dụng điều này để kết hợp cả tính toán nghiêm ngặt và lười biếng vào một ngôn ngữ.

Để hiểu rõ hơn về điều này, tôi giới thiệu bạn đến chương 38 của cuốn sách của Bob Harper .


Xin lỗi, @jozefg, tôi đã hiểu khái niệm này nhưng tôi không hiểu làm thế nào để xem một loại chỉ xuất hiện trên các vị trí tích cực. Bạn có thể chỉ định thêm một chút, và đưa ra một vài ví dụ nữa không?
paulotorrens
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.