0

我在 Haskell Diagrams 中发现了 connectPerim 函数的一些问题。该函数在选定的周长部分连接两个图形的周长(本次图形周长分为12个部分,“/”前面的数字表示选择连接哪个部分)。connectPerim' :: (Renderable (Path R2) b, IsName n1, IsName n2) => ArrowOpts -> n1 -> n2 -> Angle -> Angle -> Diagram b R2 -> Diagram b R2 例如:

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

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

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

是否可以将这些角度参数组合到一个变量中?如果可以,你可以举个例子吗?先感谢您!

4

1 回答 1

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
于 2014-05-18T15:13:32.727 回答