함수형 프로그래밍 예제

또한 함수언어는 변경할 수 없는 상태를 전달하여 상태를 시뮬레이션합니다. 이 작업은 함수가 상태를 매개 변수 중 하나로 받아들이고 결과와 함께 새 상태를 반환하여 이전 상태를 변경하지 않도록 하여 수행할 수 있습니다. [71] 기능적 프로그래밍은 다음과 같은 장점을 제공합니다 – 기능 적 랑게이지는 문장의 실행보다는 표현과 선언에 empazies. 따라서 로컬 또는 전역 상태에 종속된 다른 프로시저와 달리 FP의 값 출력은 함수에 전달된 인수에만 의존합니다. 명령적 프로그래밍에서 한 가지 일반적인 부작용은 할당 문이 저장된 값을 변경하여 변수를 변이하는 경우입니다. 함수형 프로그래밍의 함수는 변수 할당을 지원하지 않습니다. 변수의 초기 값은 변경되지 않으므로 함수형 프로그래밍은 이러한 부작용을 제거합니다. 고차 함수는 이전 명령프로그래밍에서는 거의 사용되지 않습니다. 기존의 명령적 프로그램은 루프를 사용하여 목록을 통과하고 수정할 수 있습니다. 반면에 함수 프로그램은 함수와 목록을 사용하는 상위 „맵“ 함수를 사용하여 각 목록 항목에 함수를 적용하여 새 목록을 생성하고 반환합니다.

목록 1은 몇 명의 Employee 개체를 생성한 다음 50세 미만의 모든 직원 목록을 인쇄하는 Employees 응용 프로그램을 보여 줍니다. 이 코드는 개체 지향 및 함수형 프로그래밍 스타일을 모두 보여 줍니다. Coq, Agda, Cayenne 및 Epigram과 같은 일부 연구 지향적 인 기능 언어는 유형이 용어에 의존 할 수있는 직관적 유형 이론을 기반으로합니다. 이러한 형식을 종속 형식이라고 합니다. 이러한 유형 시스템은 낙할 수 있는 형식 추론이 없으며 이해하기 어렵고 프로그래밍하기 어렵습니다. [50] [51] [52] [53] 그러나 종속 형식은 조건자 논리에서 임의의 제안을 표현할 수 있습니다. 커리 -하워드 동형화를 통해, 다음, 이러한 언어의 잘 입력 된 프로그램은 컴파일러가 인증 된 코드를 생성 할 수있는 공식적인 수학적 교정을 작성하는 수단이된다. 이러한 언어는 주로 학술 연구에 관심이 있지만 (공식화 된 수학 포함), 그들은 뿐만 아니라 엔지니어링에 사용 되기 시작 했다.

Compcert는 Coq로 작성되어 공식적으로 확인된 C 프로그래밍 언어의 하위 집합에 대한 컴파일러입니다. [54] 효율성 – 기능 프로그램은 동시에 실행할 수있는 독립적 인 단위로 구성되어 있습니다.