Tương lai được mô tả như thế nào về lý thuyết thể loại?


Câu trả lời:


25

Khi nó xảy ra, tôi đang viết một bài báo về điều này bây giờ. IMO, một cách tốt để suy nghĩ về tương lai hoặc lời hứa là về sự tương ứng của Curry-Howard cho logic thời gian .

Về cơ bản, ý tưởng đằng sau tương lai là nó là một cấu trúc dữ liệu đại diện cho một tính toán đang được tiến hành và trên đó bạn có thể đồng bộ hóa. Về logic thời gian, đây là các nhà điều hành cuối cùng . Này có một cấu trúc monadic: r e t u r n : Một Một b i n d : ( Một B ) MộtB trong đó r e t u r nMột

retbạnrn:MộtMộtbtôind:(MộtB)MộtB
retbạnrnspawn hoạt động một quá trình mà ngay lập tức trả về đối số của nó, và tạo ra một quy trình mới mà chờ đợi cho một giá trị 's, áp dụng e để giá trị đó, và sau đó chờ đợi cho B -giá trị trước khi trở về. Các Promises / Một đề xuất cho CommonJS gọi là hoạt động ràng buộc monadic , và Scala 2.10 chỉ cung cấp cho nó giao diện monadic tiêu chuẩn .btôindmộtfBthen

Các kép để các nhà điều hành cuối cùng là luôn luôn hành Một logic thời gian, mà nói rằng tại mỗi ngay lập tức, bạn nhận được một Một . Khi bạn chuyển từ một ngữ nghĩa Kripke của logic thời gian (trong đó bạn chỉ mô hình hóa khả năng chứng minh) sang một ngữ nghĩa phân loại của λ -calculus (trong đó bạn mô hình hóa các thuật ngữ / bằng chứng lambda), thực ra có rất nhiều cách để làm điều này.MộtMộtMộtλ

Điều đơn giản nhất bạn có thể làm là để có , với lý do khi bạn có một Một , bạn luôn có nó. Điều này hoạt động, nhưng là loại nhàm chán, IMO. :)MộtMộtMột

MộtStremộtmMộtMột

λ

Nick Benton và tôi đã tranh luận về việc lập trình rõ ràng với các luồng trong ngữ nghĩa Ultrametric Semantics of Reactive của chúng tôi . Sau đó, Alan Jeffrey đã đề xuất sử dụng LTL như một hệ thống loại trong LTL loại FRP của mình , một quan sát mà Wolfgang Jeltsch cũng đã thực hiện trong bài viết của mình Hướng tới một ngữ nghĩa phân loại phổ biến cho logic thời gian tuyến tính và lập trình phản ứng chức năng .

Sự khác biệt giữa quan điểm của Nick và tôi, và quan điểm mà Alan và Wolfgang đưa ra được hiểu rõ nhất (IMO) bằng cách so sánh cấu trúc được đưa ra trong các bước đầu tiên của Birkedal et al. Trong lý thuyết miền được bảo vệ tổng hợp: lập chỉ mục từng bước trong topos của cây với giấy của Alan. Các đỉnh của cây (presheaves trên các số tự nhiên được sắp xếp theo kích thước) rất giống với loại không gian siêu hình mà Nick và tôi đã sử dụng, nhưng dễ dàng hơn nhiều để so sánh với thể loại của Alan (presheaves theo một loại thời gian rời rạc), vì cả hai đều là presheaf Thể loại.

Nếu bạn quan tâm đến tương lai đặc biệt cho đồng thời, thì có lẽ nên xem xét CTL hơn là LTL. AFAIK, đó là lãnh thổ chưa được khám phá!

EDIT: đây là một liên kết đến dự thảo . Bài viết chủ yếu là về việc thực hiện FRP đánh máy, vì vậy ngôn ngữ là đồng bộ. Nhưng hầu hết các cuộc thảo luận về tương lai / sự kiện trong phần 3.3 về cơ bản cũng nên áp dụng cho các ngôn ngữ thực sự đồng thời.


1
Tôi muốn nhận được một bản sao đó khi bạn hoàn thành nó.
Dave Clarke

1
MộtMột

Gần đây tôi đã đọc rằng loại Scala Try[T]Future[T]là kép, nhưng tôi hoàn toàn không hiểu điều này có nghĩa là gì / theo nghĩa nào.
Giorgio
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.