Tôi phải học Haskell cho trường đại học và tôi đang sử dụng learnyouahaskell.com để bắt đầu.
Tôi luôn sử dụng các ngôn ngữ bắt buộc nên tôi quyết định thực hành Haskell bằng cách viết mã nhiều hơn những ngôn ngữ khác.
tôi bắt đầu để thực hiện một số chức năng để làm việc với các danh sách như head
, tail
, init
...
Tại một số điểm tôi nhìn lên việc triển khai của các chức năng này để so sánh với tôi và tôi stumbled khi các chức năng vô quy định tại List.lhs
. thực hiệnThực hiện chức năng null
của null:
-- | Test whether a list is empty.
null :: [a] -> Bool
null [] = True
null (_:_) = False
thực hiện của tôi:
mNull :: [a] -> Bool
mNull [] = True
mNull _ = False
Tôi biết không có câu hỏi ngu ngốc ngay cả đối với những câu hỏi đơn giản như vậy :)
Vì vậy, câu hỏi của tôi là tại sao những ứng dụng thực hiện ban đầu (_:_)
thay vì chỉ _
?
Có lợi thế nào khi sử dụng (_:_)
hoặc có bất kỳ trường hợp cạnh nào mà tôi không biết?
Tôi thực sự không thể tưởng tượng được bất kỳ lợi thế nào vì _
bắt mọi thứ.
Chúng thực sự bình đẳng, tôi cũng thấy nó ngớ ngẩn. Tôi đoán là tác giả muốn rõ ràng. – MasterMastic