문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 Haskell (문단 편집) === 느긋한 계산 === 느긋한 계산(Lazy Evaluation)은 계산이 필요한 순간까지 계산을 미루어 둔다는 의미다. 따라서 그때 그때 필요한 만큼만 계산하는 것도 가능하다. 이 느긋한 계산의 개념으로 인하여 하스켈은 프로그램에 무한의 개념을 쉽게 적용할 수 있다. 예를 들어 어떤 길이의 정수 제곱 리스트가 필요하다면 아래처럼 무한한 리스트를 만들게 해도 상관 없다. {{{-- 무한한 정수의 제곱 리스트를 만드는, 하스켈에서는 권장되는 방법(List Comprehension이라고 부른다.) -- (보면 알겠지만, 수학에서의 집합 { x² | x∈{1, ..} } 와 유사하다.) square = [x^2 | x ← [1..]]}}} 유사한 배열을 만드는 [[JavaScript]] 코드. {{{#!syntax javascript // 전형적인 무한루프 var square = [] var i = 1 while (true) { square.push(i*i); i += 1; } // ECMAScript 6의 제너레이터(Generator)를 이용한 버전 function* square_gen(){ var i = 1; while(true){ yield i*i; i++; } } var square = square_gen(); console.log(square.next().value); console.log(square.next().value); console.log(square.next().value); }}} 일반적인 프로그래밍 언어에서는 직접 구현하기 상당히 귀찮지만, 하스켈에서는 기본적으로 값이 필요해지기 전까지 계산을 미루고 있다가 값을 요청할 때 계산을 해서 보내주기 때문에 아무 문제가 없다. 오히려 이렇게 정의해두면 필요할 때 필요한 만큼 동적으로 리스트를 생성하므로 유연한 프로그래밍을 위해 필요한 경우에는 무한을 사용하는 쪽이 권장된다. 계산 말고 패턴매칭에서도 느긋한 패턴매칭이라는 개념이 있는데, 느긋한 패턴매칭이란 패턴이 안맞아도 일단 참으로 가정해서 통과시키고, 그 패턴이 실제 사용될때가 되어서야 해당 패턴의 변수에 값을 대입하는것이다. 문법적으로는 ~ 를 앞에 붙여 ~pattern 정도로 사용하지만, 몇몇 경우에는 ~ 를 따로 붙이지 않아도 암묵적으로 적용된다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기