하스켈에 대해 빠른 질문이 있습니다. 나는 Learn You a Haskell을 따라 왔으며, 다음 명령의 실행 순서/논리에 대해 혼란 스러웠다. 삼각형의 변의 길이를 계산하는 데 사용되었다. 모든 변이 10 이하이고 총 경계가 삼각형은 24이다하스켈에 대한 이해
[(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
은 삼각형 변의 동일한 세트의 추가적인 순열 (조합?)을 제거하는 데 사용됩니다. 내가하지 않을 때처럼
[(a,b,c) | c <- [1..10], b <- [1..10], a <- [1..10], a^2 + b^2 == c^2, a+b+c==24]
:
[(6,8,10)]
나는 ..c/b
이없는 : 나는 ..c/b
그것을 실행하면
, 나는 답을 얻을 처음에 입력했습니다.
[(8,6,10),(6,8,10)]
a
및 b
값을 제외하고는 동일한 삼각형을 분명히 나타내는 것은 분명히 바뀌 었습니다.
그래서 누군가 여기서 논리와 실행/평가를 통해 나를 걸을 수 있습니까?
고챠, 고마워! – Josh