Haskell 为什么';这段代码不会产生预期的结果吗?

Haskell 为什么';这段代码不会产生预期的结果吗?,haskell,graphics,haskell-diagrams,Haskell,Graphics,Haskell Diagrams,以下是用户手册中的代码: > stops = mkStops [(gray, 0, 1), (white, 0.5, 1), (purple, 1, 1)] > gradient = mkLinearGradient stops ((-0.5) ^& 0) (0.5 ^& 0) GradPad > sq1 = square 1 # fillTexture gradient > sq2 = square 1 # fillTexture (gradient

以下是用户手册中的代码:

> stops = mkStops [(gray, 0, 1), (white, 0.5, 1), (purple, 1, 1)]
> gradient = mkLinearGradient stops ((-0.5) ^& 0) (0.5 ^& 0) GradPad
> sq1 = square 1 # fillTexture  gradient
> sq2 = square 1 # fillTexture (gradient & _LG . lGradSpreadMethod .~ GradRepeat
>                                        & _LG . lGradStart .~ (-0.1) ^& 0
>                                        & _LG . lGradEnd .~ 0.1 ^& 0)
> sq3 = square 1 # fillTexture (gradient & _LG . lGradSpreadMethod .~ GradReflect
>                                        & _LG . lGradStart .~ (-0.1) ^& 0
>                                        & _LG . lGradEnd .~ 0.1 ^& 0)
>
> example = hcat' (with & sep .~ 0.25) [sq1, sq2, sq3]
以下是我得到的:

以下是手册中的内容:

他们不太相配

ghc 7.8.3, OS X 10.10
diagrams 1.2
output: SVG

看起来mac的svg渲染器不支持扩展方法。以下是使用相同svg的Chrome和Chrome(OS X 10.9.5,Chrome版本37)的屏幕截图:

像imagemagick这样的工具根本不会呈现它们,但这是SVG后端中的一个bug,应该在下一个版本中修复

实际上,我一直在为另一个后端手动实现spread方法,因此为了更好的兼容性,我们可能会在svg后端中为此添加一个选项


光栅化和Cairo后端渐变应该(主要)起作用。(Cairo的svg输出仍然不适用于Safari,但它适用于imagemagick)

适合我。您将使用什么输出格式?什么haskell编译器,什么版本,什么版本的图表,什么操作系统?