Tôi bắt đầu hiểu cách forall
từ khóa được sử dụng trong cái gọi là "loại tồn tại" như thế này:
data ShowBox = forall s. Show s => SB s
Đây chỉ là một tập hợp con, tuy nhiên, về cách forall
sử dụng và tôi chỉ đơn giản là không thể bao bọc tâm trí của mình xung quanh việc sử dụng nó trong những thứ như thế này:
runST :: forall a. (forall s. ST s a) -> a
Hoặc giải thích tại sao những điều này là khác nhau:
foo :: (forall a. a -> a) -> (Char, Bool)
bar :: forall a. ((a -> a) -> (Char, Bool))
Hoặc toàn bộ RankNTypes
...
Tôi có xu hướng thích tiếng Anh rõ ràng, không có biệt ngữ hơn là các loại ngôn ngữ bình thường trong môi trường học thuật. Hầu hết các giải thích tôi cố gắng đọc về điều này (những giải thích tôi có thể tìm thấy thông qua các công cụ tìm kiếm) có những vấn đề sau:
- Chúng chưa hoàn chỉnh. Họ giải thích một phần của việc sử dụng từ khóa này (như "các loại hiện sinh") khiến tôi cảm thấy hạnh phúc cho đến khi tôi đọc mã sử dụng nó theo một cách hoàn toàn khác (như
runST
,foo
vàbar
ở trên). - Chúng dày đặc với các giả định mà tôi đã đọc mới nhất trong bất kỳ nhánh nào của toán học rời rạc, lý thuyết thể loại hoặc đại số trừu tượng là phổ biến trong tuần này. (Nếu tôi không bao giờ đọc các từ "tham khảo bài viết bất cứ điều gì để biết chi tiết thực hiện" một lần nữa, nó sẽ quá sớm.)
- Chúng được viết theo những cách thường xuyên biến những khái niệm đơn giản thành ngữ pháp và ngữ nghĩa bị xoắn và gãy.
Vì thế...
Về câu hỏi thực tế. Bất cứ ai cũng có thể giải thích hoàn toàn forall
từ khóa bằng tiếng Anh rõ ràng, đơn giản (hoặc, nếu nó tồn tại ở đâu đó, chỉ ra một lời giải thích rõ ràng mà tôi đã bỏ qua) mà không cho rằng tôi là một nhà toán học chìm trong thuật ngữ?
Chỉnh sửa để thêm:
Có hai câu trả lời nổi bật từ những câu trả lời chất lượng cao hơn bên dưới, nhưng thật không may, tôi chỉ có thể chọn một câu trả lời là tốt nhất. Câu trả lời của Norman rất chi tiết và hữu ích, giải thích mọi thứ theo cách cho thấy một số nền tảng lý thuyết forall
và đồng thời cho tôi thấy một số ý nghĩa thực tế của nó. câu trả lời của yairchubao phủ một khu vực không ai khác đề cập (biến loại trong phạm vi) và minh họa tất cả các khái niệm bằng mã và phiên GHCi. Tôi có thể chọn cả hai là tốt nhất, tôi sẽ. Thật không may, tôi không thể và sau khi xem xét kỹ cả hai câu trả lời, tôi đã quyết định rằng yairchu hơi nghiêng về Norman vì mã minh họa và lời giải thích kèm theo. Tuy nhiên, điều này hơi bất công vì thực sự tôi cần cả hai câu trả lời để hiểu điều này đến mức forall
không để lại cho tôi cảm giác sợ hãi mờ nhạt khi tôi nhìn thấy nó trong một chữ ký loại.