Hiện trạng của lý thuyết thể loại và đơn nguyên trong nghiên cứu khoa học máy tính lý thuyết?


16

Bối cảnh . Tôi là một sinh viên cử nhân quan tâm đến nghiên cứu liên quan đến lý thuyết thể loại, đơn nguyên và Haskell, và tôi muốn tìm một chủ đề cho luận án cử nhân của mình trong lĩnh vực đó.

Tôi đã nhìn vào tờ giấy

và tôi chưa hiểu nhiều về nó Tôi có lẽ sẽ cần khá nhiều thời gian để hiểu đầy đủ về nó. Nhưng trước khi dành nhiều thời gian hơn cho việc nghiên cứu nó, tôi muốn hiểu rõ hơn về lĩnh vực này và tiềm năng nghiên cứu của nó. Gần đây tôi đã nói chuyện với một giáo sư của tôi về điều đó và anh ấy nói với tôi rằng các đơn vị thời trang trong cộng đồng nghiên cứu từ những năm 90, nhưng ngày nay chúng đã lỗi thời.

Do đó , bây giờ tôi đang tìm kiếm công việc gần đây liên quan đến các đơn nguyên, và tôi đang tự hỏi:

  • Trong những lĩnh vực của khoa học máy tính lý thuyết hiện nay nghiên cứu được thực hiện có liên quan đến lý thuyết thể loại và đơn nguyên?
  • Những loại nghiên cứu nào đã được xây dựng hoặc đề xuất trên công trình của E. Moggi về các đơn nguyên trong lý thuyết lập trình? Đã có bất kỳ theo dõi hoặc tiếp tục nghiên cứu liên quan đến bài báo của mình?

Trước khi chúng tôi trả lời câu hỏi này: nó không phải là cấp độ nghiên cứu phải không? Nó có thể phù hợp hơn với cs.stackexchange.com.
Andrej Bauer

3
@AndrejBauer Luận án cử nhân của tôi sẽ không ở cấp độ nghiên cứu, nhưng câu hỏi của tôi đề cập đến nghiên cứu hiện tại hoặc ít nhất là nghiên cứu được thực hiện trong thập kỷ qua.
k.stm

9
@AndrejBauer Tôi không đồng ý. Trang web chị em chủ yếu là cho các câu hỏi bài tập về nhà, trong khi ở đây cần có ý kiến ​​chuyên gia.
Yuval Filmus

@Kaveh Đó là bản chỉnh sửa khá quyết liệt mà bạn vừa thực hiện. Bạn đã cải thiện một số điểm, nhưng bây giờ nó không thực sự là câu hỏi tôi đang hỏi nữa. Khi tôi có thời gian vào ngày mai, tôi sẽ khôi phục một số thay đổi của bạn. Ví dụ, điều quan trọng đối với tôi là có nền tảng ở đó. Xin vui lòng cho tôi biết những thay đổi bạn nghĩ là cần thiết và tại sao để tôi biết những gì không nên quay trở lại.
k.stm

1
@Yuval, tôi nghĩ nhiều người về Khoa học Máy tính sẽ không đồng ý với nhận xét của bạn rằng chủ yếu là cho bài tập về nhà và các chuyên gia không có mặt trên Khoa học Máy tính . Trong trường hợp này, Andrej đã trả lời hơn 100 câu hỏi về Khoa học Máy tính .
Kaveh

Câu trả lời:


14

Đã có một số phát triển liên quan đến việc sử dụng các đơn vị trong lý thuyết tính toán kể từ công trình của Eugenio Moggi. Tôi không thể cung cấp một tài khoản toàn diện, nhưng đây là một số điểm mà tôi quen thuộc, những người khác có thể đồng ý với câu trả lời của họ.

Ví dụ cụ thể của các đơn nguyên

Bạn không cần phải học lý thuyết siêu tổng quát mọi lúc. Có những ví dụ về các đơn nguyên rất thú vị và đủ phức tạp để lấp đầy toàn bộ luận án đại học.

Tôi rất thích blog của Dan Piponi, nơi ông đưa ra những ví dụ tuyệt vời về cách các đơn vị có thể được sử dụng để kết hợp lập trình chức năng và toán học. Tìm kiếm công việc của mình trên các nút thắt và bện qua các đơn vị, ví dụ.

Một ví dụ cụ thể khác về các điều đáng để nghiên cứu đã được Martin Escardo và Paulo Oliva đưa ra trong bối cảnh các chức năng lựa chọn, xem Chức năng lựa chọn của họ , Recursion Bar và cảm ứng lạc hậu , hoặc có lẽ để được quan tâm trước tiên khi đọc What Sequential Games, Định lý Tychonoff và Dịch chuyển tiêu cực kép có trong các tệp chung (các tệp Haskell và Agda được liên kết tại đây ).

Nền toán học

Monads đến từ lý thuyết thể loại và già hơn nhiều so với Eugenio Moggi. Bạn có thể nghiên cứu lý thuyết nền nếu bạn nghiêng về mặt toán học. Chẳng hạn, bạn có thể tấn công định lý đơn điệu của Beck . Một nhà khoa học máy tính lý thuyết không bao giờ có thể biết quá nhiều toán học.

Biến thể về một chủ đề

Bạn có thể nhìn vào một cái gì đó không phải là đơn nguyên.

Chẳng hạn, Thành ngữ của Connor McBride và Ross Paterson : lập trình ứng dụng với các hiệu ứng cho thấy cách người ta có thể khái quát hóa các đơn nguyên cho một cái gì đó thực sự phù hợp và sâu sắc.

Hoặc bạn có thể xem cách sử dụng comonad để mô hình hóa các hiệu ứng tính toán. Ai đó nên đề xuất một số tài liệu tham khảo cho chủ đề này, nhưng một khởi đầu tốt có thể là các slide của David Overtone .

Lý thuyết loại phương thức

Trong lý thuyết loại đồng luân, cũng như trong lý thuyết loại nói chung, các đơn nguyên xuất hiện dưới hình dạng của lý thuyết loại phương thức . Gần đây lý thuyết loại phương thức đã được xem xét trong lý thuyết loại đồng luân vì các toán tử cắt ngắn là ví dụ của các toán tử phương thức. Và sau đó là lý thuyết loại đồng luân gắn kết trong đó các toán tử phương thức (là các đơn nguyên) đóng một vai trò thiết yếu.

Hiệu ứng đại số và xử lý

[Tuyên bố từ chối trách nhiệm: thổi một phần sừng của riêng tôi ở đây.]

Cách đây một thời gian, Gordon Plotkin và John Power đã nhận xét rằng nhiều hiệu ứng tính toán không chỉ là bất kỳ đơn nguyên nào, mà là các đơn vị đặc biệt phát sinh từ các lý thuyết đại số. Điều này dẫn đến một điều trị hoàn toàn mới về hiệu ứng tính toán được gọi là hiệu ứng đại số . Sau đó Gordon Plotkin và Matija Pretnar đã giới thiệu các trình xử lý và cùng với các hiệu ứng đại số, chúng tạo thành một lý thuyết rất hay về các hiệu ứng tính toán. Một lợi thế của phương pháp này là các lý thuyết đại số có thể dễ dàng kết hợp trong khi các đơn nguyên không thể.

Bạn có thể nghiên cứu chính xác các hiệu ứng đại số liên quan đến các đơn nguyên. Bạn có thể nhìn vào cách mọi người thực hiện các hiệu ứng đại số và xử lý, nói bằng ngôn ngữ Eff hoặc trong Haskell như một thư viện . Đây là nghiên cứu hiện tại ít nhiều.


Xin chào, cảm ơn vì câu trả lời đó! Tôi đã nhấp vào trang web của bạn về Eff và có vẻ như liên kết đến Giới thiệu về Hiệu ứng và Trình xử lý Đại số đã lỗi thời, tức là tệp eff-lang.org/handlers-tutorial.pdfbị thiếu.
k.stm

1
Tôi đã yêu cầu Matija sửa liên kết, trong lúc này bạn có thể xem arxiv.org/abs/1203.1539 .
Andrej Bauer

Tôi đã Nhân tiện, bạn có thể đưa ra một số tổng quan ngắn về lý thuyết nền mà tôi cần nghiên cứu để hiểu bài viết của bạn không? Tôi biết một số lý thuyết thể loại, tính toán lambda chưa được chỉnh sửa và một số lý thuyết cơ bản về tính toán và lý thuyết cơ bản về lập trình (tôi biết ngữ nghĩa học là gì), nhưng cho đến nay không nhiều. Ví dụ, tôi có thể nói từ phần 3 của bài viết của bạn rằng tôi cần xem xét các quy tắc đánh máy (vì vậy có thể vào phép tính lambda đã gõ). Xin lỗi nếu tôi đang bị thúc đẩy ở đây.
k.stm

3
Bạn nên biết một chút về đại số phổ quát và / hoặc lý thuyết về đại số của Lavwere. Nếu bạn không quen thuộc với các quy tắc đánh máy thì bạn có thể học một cuốn sách giáo khoa chung về các ngôn ngữ lập trình, chẳng hạn như TAPL của Benjamin Pierce hoặc nền tảng thực hành của ngôn ngữ lập trình của Bob Harper .
Andrej Bauer

1

Bài viết này cung cấp một số công việc quan trọng gần đây bằng cách sử dụng các đơn nguyên.


1
Chào, cảm ơn cho câu trả lời của bạn. Tôi sẽ đánh giá cao một bối cảnh nhỏ, đó là nếu bạn có thể dành thời gian để cung cấp một số chi tiết. (Trên thực tế, bài viết có phần giới thiệu hay về nội dung của nó, nhưng tôi vẫn muốn xem một số bối cảnh cho môi trường xung quanh, như nếu có công việc liên quan và như vậy.)
k.stm
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.