재귀로 처리한다함 무시무시하지 리스트 더하는것도 sum (n:ns) = n + sum ns 이런식으로 맨앞거 더하기 나머지들의 합 이런식으로 구현한대 ㅇㅅㅇ 근데 개념 다본게 아니라서 다른방법이 나올지모름 ㅇㅅㅇ
지연평가하면 뭐가좋아?
필요할 때만 계산하니까 성능은 올라가지만 메모리는 많이 먹고 객체지향 언어들로 구현했다면 지연평가된 함수 생성 비용 때문에 성능상 이점은 없을거같음 ㅇㅅㅇ
take 함수같은거 쓰는게 아니면 쓰레기라고 하는 이유가 있긴한거같아
근데 지연평가를 안쓰더라도 메모리에 물고있어야 하는거 아니야?
map, filter 한다고하면 map결과를 Filter가 물고있어야하니까 메모리 차지하는것도 O(n) 똑같을것같은데
지연으로하게되면 O(N+ 중간결과값) 물고있어서 그런건가..?
https://youtube.com/playlist?list=PL5aSjzJqCaPaoi8yC2w549FsVgvXW5xFW
이사람이 했던거 그대로 옮겨적은거라
lazy하면 메모이제이션 효과도 있어서 속도도 좋아질 수 있음 메모리는 크기가 무한대인 수열도 lazy에서는 가능하다는걸 생각해보면 의미를 알 수 있을듯
근데 sum함수 같은거 보면 1부터 10까지 더할 때 더해진 값 저장할 변수, 다음 더할 변수 두개만 있으면 되는데 하스켈방식은 더할 변수를 10개 생성시키고 더하는방식이라 메모리는 많이 먹는다고 표현한거같아
seq