INLINE Pragma与类型类相结合
  鉴于以下代码(从attoparsec库复制而来)内联编译指示可以做什么?  我认为只有fmapR是内联的,而不是其他Functor实例中定义的其他fmap 。 
instance Functor (IResult t) where
    fmap = fmapR
    {-# INLINE fmap #-}
  如果编译器可以证明正在使用的函子是IResult ,则inline编译指示将把函数的内容(在本例中为fmapR )复制到调用它的位置。 
  在以下情况下,函数不能内联,因为fmap的定义是未知的: 
f :: Functor f => f Int -> f Float
f = fmap fromIntegral
但是,这里已经知道,因为正在使用某个仿函数,并且函数可以被内联:
f :: IResult Int -> IResult Float
f = fmap fromIntegral
-- rewritten to: f = fmapR fromIntegral; might be further inlined
