어셈블러 등 C, 자바, C #을, 같은 기존의 프로그래밍 언어를 할 때 큰 문제 중 하나는 어색한해야한다는 것입니다 순서 는 먼저 모든 종속성을 준비했습니다해야하기 때문에 주어진 작업을 수행하기 위해 수행해야 할 단계 및 이전에 THEIR 종속성
예 : A를 수행하려면 B와 C가 있어야하고 B는 D와 E에 의존하므로 다음과 같은 결과가 나타납니다.
재료를 사용하기 전에 준비해야하기 때문입니다.
기능적 언어, 특히 게으른 언어는 이것을 거꾸로 뒤집습니다. A에게 B와 C가 필요하다고 말하고 A와 평가에 필요할 때 평가되는 B와 C를 얻을 수있는 언어 런타임 (D와 E가 필요할 때)을 알아낼 수있게하여 매우 작고 간결하게 만들 수 있습니다. 작고 간결한 프로그램을 만드는 빌딩 블록. 게으른 언어는 또한 실제로 사용 된 요소 만 계산되므로 전체 목록을 메모리에 저장하지 않고도 무한 목록을 사용할 수 있습니다.
정말 좋은 요령은,이 자동 "오, 나는 B와 C가 필요하다"메커니즘은 순차 프로그램에서와 같이이 평가가 언제 어디서 일어날 수 있는지에 대한 제한이 없기 때문에 확장 가능 하다는 것이다. 다른 프로세서 나 컴퓨터에서도 동시에 사용할 수 있습니다.
그건 함수형 언어가 흥미로운 이유입니다 - 때문에 수동으로 할 필요 프로그래머 반대로기구는 런타임 시스템에 의해 점령된다 "때 무엇을해야하는지". 이는 자동 가비지 콜렉션이 Java에서 C에 대한 것과의 차이점이며, C에서보다 Java에서 강력하고 확장 가능한 다중 스레드 소프트웨어를 작성하는 것이 더 쉬운 주요 이유 중 하나입니다. 기능적 언어로 확장 가능한 멀티 스레드 소프트웨어 ...