F 샤프
위키백과 ― 우리 모두의 백과사전.
위키백과의 기술적인 한계로 인하여 다른 제목을 씁니다. 이 문서의 올바른 제목은 F#입니다. |
F#(에프 샤프, 에프 샵)은 마이크로소프트가 닷넷 프레임워크의 부분으로 개발한 함수형, 절차형 프로그래밍 언어이다. F샵은 마이크로소프트 리서치의 Don Syme이 개발하였고, 기본적인 구조는 Ocaml 언어와 비슷하다. 이 언어는 ML (프로그래밍 언어)의 일종이다.
[편집] F# 함수의 형태
함수형 프로그래밍의 "Hello World"라고 할 만한 것은 팩토리얼을 계산하는 코드이다. F# 으로는 다음과 같이 표현할 수 있다.
let rec fact n = match n with | 0 -> 1 | _ -> n * fact (n-1);;
이 코드는 팩토리얼을 재귀 함수로 정의한 것이다. 일반적으로 함수를 정의할 때는 let ... 와 같이 쓰고, 재귀함수를 정의할 때는 let rec ... 와 같이 명시한다. 함수의 마지막에는 두 개의 세미콜론으로 끝마침을 해 준다.
위 함수 정의는 수학 교과서에서 볼 수 있는 팩토리얼의 정의와 비슷하다. F# 코드는 문법과 계산방식의 측면에서 수학적 언어와 닮았다.
F# 은 자동으로 타입을 유추한다. 위의 fact 함수는 (int -> int) 타입 즉, 정수를 인자로 받아 또 다른 정수를 반환하는 함수이다.
두 번째 줄에서 F#의 또 다른 중요한 특성인 패턴 매칭을 볼 수 있다. 패턴 매칭은 match ... with ... 와 같이 표현한다. 함수 fact 는 인자가 0 이면 1 을 반환하고, 아니면 두 번째 케이스를 실행하여 0에 도달할 때까지 fact 을 재귀적으로 계속 호출한다. 패턴 매칭에서 underbar('_') 는 디폴트 케이스를 의미한다.
계산과정을 살펴보면 위 함수가 어떻게 수행이 되고, 팩토리얼이 계산되는지 알 수 있다.
fact 4 => 4 * fact 3 => 4 * (3 * fact 2) => 4 * (3 * (2 * fact 1)) => 4 * (3 * (2 * (1 * fact 0))) => 4 * (3 * (2 * (1 * 1))) ... => 24
F# 은 Ocaml 을 계승한 언어여서, 위에서 설명한 부분은 Ocaml 언어에도 그대로 적용된다.
[편집] 바깥 고리
이 문서는 컴퓨터에 관한 토막글입니다. 서로의 지식을 모아 알차게 문서를 완성해 갑시다. |
|
|
---|---|
산업용 | 델파이 · 루비 · 리스프 · 비주얼 베이직 · 스몰토크 · 어셈블리 · 얼랑 · 에이다 · 오브젝티브-C · 자바 · 자바스크립트 · 코볼 · 파이썬 · Perl · 포트란 · ABAP · AWK · C · C++ · C# · PHP · PL/SQL · SAS · sh · VB.NET |
교육용 | 로고 · 스킴 · 에펠 · 파스칼 · 프롤로그 · 하스켈 · ML |
역사적 의미가 있는 언어 |
베이직 · 시뮬라 · 알골 · 클리퍼 · 파워빌더 · APL · MUMPS · PL/I |