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 |
역사적 의미가 있는 언어: 베이직 | 시뮬라 | 클리퍼 | 파워빌더 | ALGOL | APL | MUMPS | PL/I |