하스켈로 knapsack problem 풀다가 발견한건데xs :: List a 일 때1번xs ++ repeat undefined2번map head $ iterate tail xs둘이 어떻게 다른지 설명할 수 있는 사람? ㅋㅋㅋㅋ
일단 코드 설명해줄사람
너.. 아조씨랑 하스켈 배워볼래?
1번 실행은 가능?
lazy eval 이라 undefined를 평가하기 전까지는 문제없음. 그리고 후자도 tail [] = undefined 라서 계속가면 undefined 나옴
List도 lazy야? 존나 비직관적이노
하스켈은 모든게 디폴트로 lazy인데? ㅋㅋㅋㅋ
strict한거는 보통 복잡한 자료구조에서 비효율성이 높을때만
타입만 못따라가는게 아니라 데이터도 못따라가겠누
하스켈에서 권장하는 피보나치 구현법. fib = fibs !! where fibs = 0 : scanl (+) 0 fibs
둘이 차이가 있긴 함?
일단 xs = undefined 면 다름. 그런데 undefined가 아니여도 문제가 될때가 있음
전자는 spine을 구하려면 xs가 필요하고, 후자는 xs가 없어도 spine을 구할 수 있음. 그래서 xs 를 저 term을 사용해서 재귀적으로 정의할 때 전자는 안되고 후자만 되는 케이스가 있더라
예 좀 들어주셈 ㅇㅅㅇ - dc App
전자는 loop 예외 생길 수 있나? - dc App
잠만 게시글로 올림