2014-04-22 1 views
1

나는 하스켈 얻을 sep [1, 2, 3, 4, 5]을 evalutes 방법을 이해하기 위해 노력하고있어 ([1, 3], [2, 4, 5]) :하스켈은 인터 칼 레이션을 취소하는이 기능을 어떻게 평가합니까?

sep [ ] = ([ ], [ ]) 
sep [x] = ([ ], [x]) 
sep (x1:x2:xs) = let (is, ps) = sep xs in (x1:is, x2:ps) 

내가 이런 식으로 시작 : 다음

sep [1, 2, 3, 4, 5] = let (is, ps) = sep [3, 4, 5] in (1:is, 2:ps) 

하지만를?

+2

다음 단계는 '와'9월 [5 (3), (4)]와 일치하도록 'sep (x1 : x2 : xs) = ... ' – ymonad

+0

좋습니다. 1) sep [1, 2, 3, 4, 5] = (1 : is, 2 : ps)에서 let (is, ps) = sep [3, 4, 5] 2) sep [ (3 : is, 4 : ps) 3) sep [5] = ([], [5]) 에서 2) sep [5] = ([ps] 3, 4, 5] = (3 : is, 4 : ps)에서 let (is, ps) = ([], [5]) 계속하는 방법에 대한 아이디어가 있으십니까? – Fof

답변

4

마지막으로 이해했습니다. (1) (2)에

1) sep [1, 2, 3, 4, 5] = let (is, ps) = sep [3, 4, 5] in (1:is, 2:ps)

2) sep [3, 4, 5] = let (is, ps) = sep [5] in (3:is, 4:ps)

3) sep [5] = ([], [5])

) sep [3, 4, 5] = let (is, ps) = ([], [5]) in (3:is, 4:ps) = ([3], [4, 5])

) sep [1, 2, 3, 4, 5] = let (is, ps) = ([3], [4, 5]) in (1:is, 2:ps) = ([1, 3], [2, 4, 5])

관련 문제