- 論壇徽章:
- 95
|
原帖由 sw2wolf 于 2009-5-5 14:52 發(fā)表 ![]()
floatLocation :: Window -> X (ScreenId, W.RationalRect)
--.......
rr <- snd `fmap` floatLocation w
--....
這里的fmap如何理解呢?
fmap :: (Functor f) => (a->b) -> f a -> f b
snd :: (c, d) -> d
floatLocation w 的類型為 X (ScreenId, W.RationalRect)
那么, fmap 應(yīng)用到 snd 上時(shí),會(huì)將 a 替換為 (c,d), 將 b 替換為 d, 于是 fmap snd 的類型就是 f (c, d) -> f d;在將 fmap snd 應(yīng)用到 floatLocation w 上時(shí),會(huì)把這里的 f 換為 X, (c,d) 換為 (ScreenId, W.RationalRect),就得 X (ScreenId, W.RationalRect) -> X W.RationalRect,則 fmap snd (floatLocation w) 的類型就是 X W.RationalRect
[ 本帖最后由 MMMIX 于 2009-5-5 16:38 編輯 ] |
|