값(F#)

F#의 값은 특정 형식의 수량입니다. 값은 정수나 부동 소수점 숫자, 문자나 텍스트, 목록, 시퀀스, 배열, 튜플, 구별된 공용 구조체, 레코드, 클래스 형식 또는 함수 값일 수 있습니다.

값 바인딩

바인딩이라는 용어는 이름을 정의에 연결하는 것을 말합니다. 다음 예제에서와 같이 let 키워드를 사용하여 값을 바인딩할 수 있습니다.

let a = 1
let b = 100u
let str = "text"

// A function value binding.

let f x = x + 1

값의 형식은 정의에서 유추됩니다. 정수 또는 부동 소수점 숫자 같은 기본 형식에 대해서는 리터럴의 형식에 따라 해당 형식이 결정됩니다. 따라서 위 예제에서 컴파일러는 b의 형식을 unsigned int로 유추하는 반면 a의 형식을 int로 유추합니다. 함수 값의 형식은 함수 본문의 반환 값에 의해 결정됩니다. 함수 값 형식에 대한 자세한 내용은 함수(F#)를 참조하십시오. 리터럴 형식에 대한 자세한 내용은 리터럴(F#)을 참조하십시오.

변경할 수 없는 값을 사용할 때의 이점

변경할 수 없는 값이란 프로그램을 실행하는 동안 절대로 바뀔 수 없는 값을 말합니다. C++, Visual Basic, C# 등의 언어에 익숙한 사용자라면 프로그램을 실행하는 동안 새 값을 할당할 수 있는 변수보다 변경 불가능한 값을 F#에서 더 중요하게 취급한다는 사실이 낯설게 여겨질 수도 있을 것입니다. 변경할 수 없는 데이터는 함수형 프로그래밍에서 중요한 부분을 차지하는 요소입니다. 다중 스레드 환경에서 각기 다른 여러 스레드를 통해 변경할 수 있는 공유 변수는 관리하기가 까다롭습니다. 또한 변경 가능한 변수의 경우 이를 다른 함수에 전달할 때 해당 변수가 변경될지 여부를 예측하기가 어려울 수도 있습니다.

순수한 함수형 언어에는 변수가 전혀 사용되지 않으며 함수가 엄격하게 수학 함수의 동작을 수행합니다. 프로시저 언어의 코드에서 변수를 사용하여 값을 변경해야 하는 상황이 있다고 할 때, 그에 상응하는 함수형 언어 코드에서는 변경할 수 없는 함수에 대한 입력으로 변경할 수 없는 값을 사용하고 그 출력 결과로 변경할 수 없는 각기 다른 값을 얻습니다. 이와 같은 수학적인 엄격함 덕분에 프로그램의 동작을 더 분명하게 예측할 수 있습니다. 이처럼 동작을 더 정확하게 예측할 수 있으므로 컴파일러에서 코드를 더 엄격하게 검사하고 코드를 더 효율적으로 최적화할 수 있으며, 개발자는 코드를 더 쉽게 이해하고 큰 어려움 없이 올바른 코드를 작성할 수 있습니다. 따라서 함수형 코드는 일반적인 프로시저 코드보다 디버깅하기가 쉽습니다.

F#은 순수한 함수형 언어는 아니지만 함수형 프로그래밍을 완벽하게 지원합니다. 변경할 수 없는 값을 사용하면 함수형 프로그래밍의 장점을 충분히 살려 코드를 작성할 수 있으므로 가능하면 이 방식을 따르는 것이 좋습니다.

변경할 수 있는 변수

mutable 키워드를 사용하여 변경 가능한 변수를 지정할 수 있습니다. F#의 변경 가능한 변수는 대개 형식의 필드나 로컬 값으로 범위가 제한됩니다. 변경 가능한 변수의 범위가 제한되어 있으면 변수를 더 쉽게 제어할 수 있고 변수를 잘못된 방식으로 수정하는 실수를 줄일 수 있습니다.

값을 정의할 때와 같은 방식으로 let 키워드를 사용하여 변경 가능한 변수의 초기 값을 할당할 수 있습니다. 그러나 다음 예제에서와 같이 <- 연산자를 사용하여 변경 가능한 변수에 새 값을 추가로 할당할 수 있다는 점에서 차이가 있습니다.

let mutable x = 1
x <- x + 1

관련 항목

제목

설명

let 바인딩(F#)

let 키워드를 사용하여 값과 변수에 이름을 바인딩하는 방법을 설명합니다.

함수(F#)

F#의 함수에 대해 간략하게 설명합니다.

참고 항목

개념

Null 값(F#)

기타 리소스

F# 언어 참조