ابتدای محتوای صفحه
۲۴ - ۴دوپلیکِتیو (!)
احتمالاً حدس میزدین که مقصدِ بعدیمون در سرزمینِ Compose
اینجا باشه. اینطور که پیداست، اپلیکتیوها هم تحتِ ترکیب بستهاند. میشه دوتا تایپی که نمونه ِ Applicative
دارن رو با هم ترکیب کنیم و یه نمونه ِ Applicative
ِ جدید بگیریم. فقط اینبار خودتون باید بنویسین.
وقت تمرینه
-- تایپ نمونهها رو
-- .برای راهنمایی نوشتیم
{-# LANGUAGE InstanceSigs #-}
instance (Applicative f, Applicative g)
=> Applicative (Compose f g) where
pure :: a -> Compose f g a
pure = undefined
(<*>) :: Compose (a -> b)
-> Compose a
-> Compose b
(Compose f) <*> (Compose a) = undefined
در یکی از فصلهای قبلی اشاره کردیم که Applicative
جبر ِ ضعیفتری نسبت به Monad
ِه، و گفتیم که گاهی اوقات که تمامِ قدرتِ Monad
نیاز نیست، ممکنه استفاده از Applicative
فوایدی داشته باشه. این یکی از اون فوایده. برای ترکیب ِ Applicative
ها لازم نیست همهی زحمتهای لازم برای رسیدن به ترکیب ِ دوتا Monad
رو بکشین تا یه Monad
داشته باشین – آخ راست میگین... هنوز به ترکیب ِ موندها نرسیدیم، الان میگیم.