connectPerim' Haskell Diagrams功能

时间:2014-05-18 14:58:32

标签: variables haskell haskell-diagrams

我在Haskell Diagrams中发现了connectPerim'函数的一些问题。此功能连接周边选定部分中两个图形的周长(此时图形周长分为12个部分,“/”之前的数字表示选择连接哪个部分)。     connectPerim'::(可渲染(路径R2)b,IsName n1,IsName n2)=> ArrowOpts - > n1 - > n2 - >角度 - >角度 - >图b R2 - >图b R2 例如:

# connectPerim' singleHeadArrow "2" "1" (6/12 :: Turn) (0/12 :: Turn)

我想将两个Angle参数((6/12 :: Turn)和(0/12 :: Turn))放入新变量中,但我只能将这些参数放入单独的变量中。例如

arrowRight1 = (6/12 :: Turn)
arrowRight2 = (0/12 :: Turn)
# connectPerim' singleHeadArrow "2" "1" arrowRight1 arrowRight2

是否可以将这些角度参数组合成一个变量?如果它可以你举个例子吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

您可以创建connectPerim'的替代版本,它接受两个角度作为单个元组:

connectPerim'' ao n1 n2 (a0,a1) = connectPerim' ao n1 n2 a0 a1

使用uncurry

的等效且更优雅的定义
connectPerim'' ao n1 n2 = uncurry $ connectPerim' ao n1 n2

用法:

let arrowRight = (6/12,0/12) :: (Turn, Turn)
in connectPerim'' singleHeadArrow "2" "1" arrowRight