ابتدای محتوای صفحه
۲۰ - ۲تعریف تایپکلاس Traversable
این تعریفِ تایپکلاس در کتابخونه Data.Traversable
ِه:
class (Functor t, Foldable t)
=> Traversable t where
traverse :: Applicative f =>
(a -> f b)
-> t a
-> f (t b)
traverse f = sequenceA . fmap f
تابعِ traverse
تکتکِ المانهای یه ساختار رو به یه اجراییه نگاشت میده، اجراییهها رو از چپ به راست محاسبه میکنه، و نتایج رو جمعآوری میکنه.
-- | در ساختار رو action هر
-- | از چپ به راست محاسبه کن
-- | .و نتایج رو جمعآوری کن
sequenceA :: Applicative f
=> t (f a) -> f (t a)
sequenceA = traverse id
{-# MINIMAL traverse | sequenceA #-}
یه نمونه از این تایپکلاس، حداقل یکی از دو تابعِ traverse
یا sequenceA
رو ارائه میده، چون همونطور که میبینید، هرکدوم از اونها رو میشه برمبنای اون یکی تعریف کرد. مشابهِ Foldable
، اینجا هم اگه روشِ بهینهتری برای محاسبه با نوعدادهمون داشته باشیم، میشه متودهای دیگهی تایپکلاس هم تعریف کنیم. ما تو این فصل فقط روی همین دو تابع تمرکز میکنیم، چون این دوتا از بقیه خیلی بیشتر کاربرد دارن.