我在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
是否可以将这些角度参数组合为一个变量?如果是,你能举个例子吗?提前感谢!
你可以创建一个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