tôi học được từ chapter 9 of Learn You A Haskell For Great Good rằngCó nên chỉ định chữ ký loại cho chính hay không? Tại sao tại sao không?
Theo quy ước, chúng ta thường không chỉ định một tuyên bố kiểu cho
main
.
Theo như tôi có thể nói, quy ước này phổ biến. Tuy nhiên, nếu tôi biên soạn, sử dụng -Wall
cờ, một chương trình mà thiếu một chữ ký kiểu cho main
, chẳng hạn như
-- test.hs
-- main :: IO()
main = print (1 :: Int)
GHC không đưa ra cảnh báo:
$ ghc -Wall test.hs
[1 of 1] Compiling Main (test.hs, test.o)
test.hs:2:1: Warning:
Top-level binding with no type signature: main :: IO()
Linking test ...
$
Tôi đang bối rối ... Nếu chữ ký loại cho main
thực sự là thừa, tại sao -Wall
khiến GHC khiếu nại khi chữ ký bị thiếu? Có lý do chính đáng nào (ngoài việc loại bỏ cảnh báo đó) để chỉ định loại của main
không?
Thiếu chữ ký loại cấp cao nhất phải là lỗi. Trong thực tế nó phải là bất hợp pháp. – Shoe
Bất hợp pháp như trong nên bị trừng phạt như một tội phạm. Không phải bất hợp pháp trong ngôn ngữ. – Shoe
Đặc biệt, chữ ký loại * xuất * cấp cao nhất có thể là lỗi. Tôi sử dụng rất nhiều người giúp việc rất chung chung không được xuất khẩu, không có tài liệu công khai và chữ ký của họ dài hơn cơ thể của họ. Viết ra những điều không giúp gì cả và chỉ là một sự khó chịu. –