# 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 언어에도 그대로 적용된다.

## [편집] 바깥 고리

- 마이크로소프트 리서치의 F# 사이트
  - F# 매뉴얼
- F Sharp & F# .Net

| 이 문서는 컴퓨터에 관한 토막글입니다. 서로의 지식을 모아 알차게 문서를 완성해 갑시다.

주요 프로그래밍 언어 (더 보기)
산업용: 델파이 | 루비 | 리스프 | 비주얼 베이직 | 스몰토크 | 어셈블리 | 얼랑 | 에이다 | 오브젝티브-C | 자바 | 자바스크립트 | 코볼 | 파이썬 | Perl | 포트란 | ABAP | AWK | C | C++ | C# | PHP | PL/SQL | SAS | sh | VB.NET
학문용: 로고 | 스킴 | 에펠 | 파스칼 | 프롤로그 | 하스켈 | ML
역사적 의미가 있는 언어: 베이직 | 시뮬라 | 알골 | 클리퍼 | 파워빌더 | APL | MUMPS | PL/I

원본 주소 ‘http://ko.wikipedia.org../../../f/_/%EC%83%A4/F_%EC%83%A4%ED%94%84.html’

분류: 컴퓨터 토막글 | 프로그래밍 언어 | 마이크로소프트

##### Views

- 문서
- 토론
- 현재 버전

##### 찾기

##### 다른 언어

- Deutsch
- English
- 日本語
- Nederlands
- Polski
- Русский
- ไทย
- 中文