2014-05-18 44 views
0

我發現Haskell圖中的connectPerim函數存在一些問題。此功能在周邊的選定部分連接兩個數字的周界(此時數字周界分爲12個部分,「/」之前的數字表示選擇哪個部分連接)。 connectPerim'::(Renderable(Path R2)b,IsName n1,IsName n2)=> ArrowOpts - > n1 - > n2 - > Angle - > Angle - > Diagram b R2 - > Diagram b R2 例如:connectPerim'Haskell Diagrams函數

# 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 

是否可以將這些角度參數結合到一個變量?如果這是你能舉一個例子嗎?先謝謝你!

+0

你可以舉一個「統一」變量的例子嗎?是元組('(6/12 :: Turn,0/12 :: Turn)')夠了嗎? – Benesh

回答

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