Haskell图表包:什么是"选择功能"?

时间:2014-04-10 17:32:18

标签: haskell charts

我一直在阅读Haskell Chart package的源代码,因为我发现它创建的图表非常好。但我很难理解它是如何运作的。

特别是render函数使用了type PickFn

type PickFn a = Point -> Maybe a

data Renderable a = Renderable {
   minsize :: ChartBackend RectSize,
   render  :: RectSize -> ChartBackend (PickFn a)
}

class ToRenderable a where
  toRenderable :: a -> Renderable ()

PickFn的评论是“将设备坐标中的点映射到某个值的函数。”,遗憾的是这对我来说没有任何意义。

我的最终目标是能够按照代码来了解它如何绘制图表,但我想从“什么是选择函数”开始,这样我至少可以理解这些类型。

1 个答案:

答案 0 :(得分:2)

选择功能对图表库的客户端来说非常方便 - 它允许您从结果图像中的某个点向后映射到该位置的事物(即Maybe a)。

例如,Graphics.Rendering.Chart.Layout.layoutToRenderable会返回Renderable (LayoutPick x y y),以便您可以将图片中的某个点反射回布局的特定组件 - 其图例,轴标题,绘图区域,等