맨위로가기

FP (프로그래밍 언어)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

FP (프로그래밍 언어)는 값을 다른 값으로 매핑하는 함수로 프로그램을 구성하는 함수 수준 프로그래밍 언어이다. FP는 원시 함수와 함수형으로 구분되며, 함수형은 함수를 결합하여 새로운 함수를 만드는 연산자로서 FP의 핵심적인 구성 요소이다. FP84는 FP를 확장하여 무한 수열과 지연 평가를 포함하며, 프로그램의 기본 대수를 통해 의미를 구현한다.

더 읽어볼만한 페이지

  • 1977년 개발된 프로그래밍 언어 - 아이콘 (프로그래밍 언어)
    아이콘은 1970년대에 개발된 SNOBOL 언어 기반의 프로그래밍 언어로, 문자열 처리, 목표 지향 실행, 함수 기반 흐름 제어 등의 특징을 가지며 유니콘 언어로 발전했다.
FP (프로그래밍 언어) - [IT 관련 정보]에 관한 문서
개요
이름FP
종류프로그래밍 언어
주요 정보
패러다임함수 레벨 프로그래밍
등장 시기1977년
설계자존 배커스
기술 세부 사항
자료형알 수 없음
구현알 수 없음
방언FP84
영향 관계
영향을 받은 언어APL
영향을 준 언어FL
하스켈
J

2. 역사

FP는 1977년 존 백커스가 튜링상 수상 강연인 "프로그래밍은 폰 노이만 스타일에서 해방될 수 있는가? 함수형 스타일과 그 대수"에서 처음 소개되었다. 백커스는 이 강연에서 기존 프로그래밍 언어의 한계를 지적하고, 변수 없는 프로그래밍(variable-free programming)이라는 새로운 함수형 프로그래밍 스타일을 제안했다.

백커스가 제안한 함수형 스타일은 함수를 값처럼 다루고, 함수들을 결합하여 더 큰 함수를 만드는 방식으로 프로그램을 구성하는 방식이다. 이러한 방식은 폰 노이만 구조의 병목 현상을 극복하고, 프로그램의 간결성과 재사용성을 높일 수 있다고 주장했다.

FP84는 FP를 확장한 것으로, 무한 수열, 프로그래머가 정의한 결합 형식(백커스 자신이 FP의 후속작인 FL에 추가한 것과 유사), 지연 평가 등을 포함한다.

2. 1. FP84

FP84는 무한 수열, 프로그래머가 정의한 결합 형식(백커스 자신이 FP의 후속작인 FL에 추가한 것과 유사), 그리고 지연 평가를 포함하도록 FP를 확장한 것이다. FP84는 백커스 자신이 FP를 변형한 또 다른 언어인 FFP와 달리, 객체와 함수를 명확하게 구분한다. 즉, 함수는 더 이상 객체의 수열로 표현되지 않는다. FP84의 확장은 수열 생성이 ⊥이 아닌 객체에만 적용되어야 한다는 FP의 제약을 제거함으로써 이루어졌으며, FP84에서는 표현식의 전체 집합(의미가 ⊥인 표현식을 포함)이 수열 생성 아래에서 닫혀 있다.

FP84의 의미는 프로그램의 기본 대수, 즉 프로그램을 조작하고 추론하는 데 사용할 수 있는 일련의 함수 수준 프로그래밍 등식에 구현되어 있다.

3. 핵심 개념

= g:x if h:x = F
= ⊥ 그 외의 경우모두에 적용 (apply to all):〈x1,...,xn〉 = 〈f:x1,...,f:xn오른쪽 삽입 (insert right)/f/f:〈x〉 = x
/f:〈x1,x2,...,xn〉 = f:〈x1,/f:〈x2,...,xn〉〉
/f:〈 〉 = unit f왼쪽 삽입 (insert left)\f\f:〈x〉 = x
\f:〈x1,x2,...,xn〉 = f:〈\f:〈x1,...,xn-1〉,xn
\f:〈 〉 = unit f



함수는 연산자에 의해 기본 요소로부터 구성될 뿐만 아니라, 방정식에 의해 재귀적으로 정의될 수도 있다. 가장 간단한 형태는 다음과 같다.[1]

:'''f''' ≡ ''E'''''f'''

여기서 ''E'''''f'''는 연산자를 사용하여 기본 요소, 다른 정의된 함수, 그리고 함수 기호 '''f''' 자체로 구성된 표현식이다.

3. 1. 값과 함수

FP에서 프로그램은 값을 다른 값으로 매핑하는 함수로 구성된다. 값은 불리언(`'''T'''`, `'''F'''`), 정수(`0`, `1`, `2`, ..., `∞`), 문자(`'a'`, `'b'`, `'c'`, ...), 기호(`'''x'''`, `'''y'''`, ...) 등 원자 값과, 이러한 값들로 구성된 시퀀스(sequence) 〈'''x'''1,...,'''x'''n〉를 포함한다. `⊥`는 정의되지 않은 값(undefined)을 의미하며, '바닥(bottom)'이라고도 한다. 시퀀스는 바닥을 보존한다. 즉, 〈'''x'''1,...,'''⊥''',...,'''x'''n〉 = `⊥`이다.

FP에서 함수 '''f'''는 단일 값 '''x'''를 다른 값으로 매핑한다. '''f''':'''x'''는 함수 '''f'''를 값 '''x'''에 적용한 결과이다. 함수는 원시 함수(FP 환경에서 제공)와 함수형(프로그램 형성 연산)으로 구분된다.

원시 함수의 예로는 '''상수''' 함수가 있다. 값 '''x'''는 상수 값 함수 '''x̄'''로 변환된다. 함수는 엄격하므로, '''f''':'''⊥''' = '''⊥'''이다.

또 다른 원시 함수 예시는 '''선택자''' 함수이다. '''1''', '''2''', ... 등으로 표기한다. 여기서:

'i':〈x1,...,xn= xi(1 ≤ 'i' ≤ n 일 때)
= ⊥(그 외의 경우)


3. 2. 함수형 (Functional Forms)

= g:x if h:x = F
= ⊥ 그 외의 경우모두에 적용 (apply to all):〈x1,...,xn〉 = 〈f:x1,...,f:xn오른쪽 삽입 (insert right)/f/f:〈x〉 = x
/f:〈x1,x2,...,xn〉 = f:〈x1,/f:〈x2,...,xn〉〉
/f:〈 〉 = unit f왼쪽 삽입 (insert left)\f\f:〈x〉 = x
\f:〈x1,x2,...,xn〉 = f:〈\f:〈x1,...,xn-1〉,xn
\f:〈 〉 = unit f


3. 3. 방정식형 함수 (Equational Functions)

함수는 연산자에 의해 기본 요소로부터 구성될 뿐만 아니라, 방정식에 의해 재귀적으로 정의될 수도 있는데, 가장 간단한 형태는 다음과 같다.

:'''f''' ≡ ''E'''''f'''

여기서 ''E'''''f'''는 연산자를 사용하여 기본 요소, 다른 정의된 함수, 그리고 함수 기호 '''f''' 자체로 구성된 표현식이다.[1] 함수는 어떤 방정식에 의해 재귀적으로 정의될 수도 있는데, 가장 단순한 형태는 다음과 같다.[1]

:'''f''' ≡ ''E'''''f'''

여기서 ''E'''''f'''는 함수 형식을 사용하여 원시 함수, 다른 정의된 함수 및 함수 기호 '''f''' 자체로부터 구축된 하나의 이다.[1]

참조

[1] 논문 The Conception, Evolution, and Application of Functional Programming Languages https://dl.acm.org/d[...] 1989
[2] 웹사이트 Interview with Simon Peyton-Jones https://www.cs.cmu.e[...] 2017
[3] 웹사이트 Functional Programming Archaeology http://prog21.dadgum[...] 2007-12-28
[4] 논문 The Conception, Evolution, and Application of Functional Programming Languages https://dl.acm.org/d[...] 1989
[5] 간행물 Can programming be liberated from the von Neumann style?: A functional style and its algebra of programs
[6] 웹사이트 Interview with Simon Peyton-Jones https://www.cs.cmu.e[...] 2018-07-07
[7] 웹사이트 Functional Programming Archaeology http://prog21.dadgum[...] 2007-12-28
[8] 논문 The Conception, Evolution, and Application of Functional Programming Languages http://haskell.cs.ya[...] 1989
[9] 저널 Can programming be liberated from the von Neumann style?: A functional style and its algebra of programs
[10] 웹인용 Association for Computing Machinery A. M. Turing Award http://signallake.co[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com