我有一個關於Haskell的快速問題。我一直在關注Learn You a Haskell,對於以下代碼片段的執行順序/邏輯,用於計算三角形的邊長,當所有邊等於或小於10以及總邊長爲三角形是24:瞭解一點Haskell
[(a,b,c) | c <- [1..10], b <- [1..c], a <- [1..b], a^2 + b^2 == c^2, a+b+c==24]
的一部分是混淆對我來說是綁定在b
和a
結合上方擴展。從我收集的內容來看,..c
和..b
用於刪除同一組三角形邊的其他排列(組合?)。
當我與..c/b
運行它,我得到了答案:
[(6,8,10)]
當我沒有..c/b
:
[(a,b,c) | c <- [1..10], b <- [1..10], a <- [1..10], a^2 + b^2 == c^2, a+b+c==24]
,因爲我沒有當我最初鍵入它,我得到:
[(8,6,10),(6,8,10)]
哪一個明顯代表了同一個三角形,除了a
和b
的值已被交換。
那麼,有人可以通過邏輯/執行/評估這裏發生了什麼嗎?
哎呀,謝謝! – Josh