tôi nhìn vào tài liệu cho Data.Traversable
và đã xem qua fmapDefault
- https://downloads.haskell.org/~ghc/latest/docs/html/libraries/base/Data-Traversable.html#g:3Điểm 'fmapDefault' trong 'Data.Traversable' là gì?
fmapDefault :: Traversable t => (a -> b) -> t a -> t b
Các trạng thái tài liệu -
Chức năng này có thể được sử dụng như một giá trị cho fmap trong một trường hợp functor, miễn là giao điểm được xác định.
Vì vậy, có lẽ nó có thể được sử dụng để lấy số fmap
cho ví dụ Traversable
. Tuy nhiên, Traversable
có Functor
là một siêu lớp.
class (Functor t, Foldable t) => Traversable t where
...
Vì vậy, bạn không thể xác định một trường hợp Traversable
mà không quy định trường hợp Functor
đầu tiên! Và bất cứ nơi nào bạn có Traversable
, bạn có quyền truy cập vào một fmap
, tương đương với (và có lẽ hiệu quả hơn) fmapDefault
.
Vì vậy, nơi nào người ta sẽ sử dụng fmapDefault
, thay vì nhiều người quen thuộc hơn fmap
?
"Bạn không thể xác định cá thể' Traversable' mà không định nghĩa cá thể 'Functor' trước!" Vâng, "đầu tiên" là một thuật ngữ khá ... –
Vâng, đó là một chút của một fart não. Giống như giả định 1 đến trước 2, do năm tính theo thủ tục từ 0-10. Và thế thì bạn xem xét câu hỏi - điều gì đến trước, '-1' hay '-2', và được chứng ngộ. –