++
을 사용하지 않고 하스 켈에서 왼쪽에서 오른쪽으로 목록을 작성하는 방법이 있습니까?하스켈없이 왼쪽에서 오른쪽으로 목록 작성 ++
cons
은 일정 시간 작업이며 코드를 효율적으로 유지하려고합니다. 이런 식으로 하스켈의 게으름을 이용하는 일반적인 방법이있는 것처럼 느껴지지만, 나는 그것을 생각할 수 없다.
은 지금 나는 Collatz 시퀀스를 생성하는 기능을 쓰고 있어요,하지만 잘못된 방향으로 목록을 구축하는 것 : GHCi에서
module CollatzSequence where
collatz :: (Integral a) => a -> [a] -> [a];
collatz n l
| n <= 0 = error "Enter a starting number > 0"
collatz n [] = collatz n [n]
collatz n [email protected](x:_)
| x == 1 = l
| even x = collatz n ((div x 2):l)
| otherwise = collatz n ((x*3 + 1):l)
:
*CollatzSequence> collatz 13 []
[1,2,4,8,16,5,10,20,40,13]
나는 우연히도, [관련없는 질문의 예]로 Collatz 시퀀스를 구현했습니다 (http://stackoverflow.com/a/23767928/791604). 아마도 트릭을 얻으려면 너지가 충분할 것입니다! (즉, 누적기를 떨어 뜨리면 ... 물건을 돌려 주기만하면됩니다.) –