✅ 1. 변수와 불변성
F#은 함수형 프로그래밍(FP)언어로, 데이터 불변성을 기본 철학으로 하고 있습니다. 다른 언어에서는 변수를 자유롭게 바꿀 수 있으나, F#에서는 기본적으로 변수를 바꿀 수 없게 설계되어 있습니다. 대신 필요할 때만 명시적으로 변경할 수는 있습니다. 이러한 특성 덕분에 코드 안정성이 높아지고 함수형 사고방식을 자연스럽게 체득할 수 있습니다.
✅ 2. F#의 실행 환경
기본적으로 F# 코드를 실행하는 방법은 크게 두 가지가 있습니다.
- 프로젝트 단위 실행:
dotnet new console -lang 'F#'으로 프로젝트를 만든 후, Program.fs에서 코드를 작성하고 dotnet run으로 실행하는 방법이 있습니다. 이 경우 프로젝트 안에 다른 .fs 파일들도 포함되나 항상 시작점(entry point)는 Program.fs 파일입니다.
- 스크립트 파일 실행:
.fsx 파일을 만들어 dotnet fsi 파일명.fsx로 실행하면, 따로 프로젝트를 만들지 않고 독립적인 실행이 가능합니다. 이러한 방식은 파일 단위로 바로 실습이 가능하기에 초보자가 F#을 배울 때 매우 편리한 기능이빈다.
☢️ 참고: F#의 .fs 파일은 프로젝트 없이 dotnet run으로 바로 실행 불가, 독립 실행을 원할 시 .fsx 파일로 작성
이번 포스팅에서는 .fsx 방식을 기준으로 작성했습니다.
✅ 3. 불변 변수와 가변 변수
F#에서 변수를 선언할 때 기본적으로 불변(immutable)이며 한 번 값을 지정하면 변경할 수 없습니다.
☢️ 3-1. 불변 변수
// variables.fsx
// 불변 변수 선언
let x = 50
printfn "x = %d" x
- let 키워드 사용 시 변수를 불변으로 선언함
- 출력 결과: x = 50
- 이 변수는 선언 후 값을 바꾸려고 하면 컴파일 오류 발생
x <- 10; // ❌ 불가능
F#에서는 불필요한 상태 변화가 없도록 기본이 불변이기 때문에, 코드 안정성과 예측 가능성이 높아집니다.
☢️ 3- 2. 가변 변수 선언
값을 바꿔야 하는 경우 mutable 키워드를 사용해 변수의 값을 바꿀 수 있습니다.
// 가변 변수 선언
let mutable t= 5
printfn "t = %d" t
// 가변 변수의 값 변경
t <- 50
printfn "t를 변경한 값 = %d"t
t = 5
t를 변경한 값 = 50
- mutable을 붙여야만 값을 변경할 수 있고, 변경 시 <- 연산자를 사용
- 가급적 불변 변수를 기본으로 사용하고, 필요 시 mutable을 사용하는 것이 함수형 프로그래밍의 핵심
✅ 4. 변수 출력과 형식 지정
F#에서는 printfn으로 변수 값을 출력할 수 있으며, 형식 지정자를 이용해서 다양한 타입을 포맷할 수 있습니다.
// 변수 출력과 형식지정
let name = "Kimetsu no yaiba: mugen castle";
let release_date = (2025,8,22);
let time = 155;
let types = ["2d"; "IMax"; "4DX"; "MX4D";"Dolby Cinema"];
printfn "영화: %s, 개봉일: %A, 상영 시간: %i분, 상영 타입: %A" name release_date time types;
영화: Kimetsu no yaiba: mugen castle, 개봉일: (2025, 8, 22), 상영 시간: 155분, 상영 타입: ["2d"; "IMax"; "4DX"; "MX4D"; "Dolby Cinema"]
- %s -> 문자열, %A -> 정수(int * int * int), %i -> 정수(int),
- println은 자동으로 줄바꿈까지 처리하므로, 여러 변수를 출력할 때 편리
형식 지정자 | 용도 |
%s | 문자열 |
%i | int |
%f | float |
%A | 모든 타입 -> F#이 알아서 구조 표시 |
✅ 5. 불변성과 가변성 차이
구분 | 선언 키워드 | 변경 가능 여부 | 특징 |
불변 변수 | let | ❌ | 기본값, 안정적, 함수형 패러다임에 적합 |
가변 변수 | let mutable | ✅ | 필요할 때만 사용, <- 연산자로 값 변경 |
GitHub - Koras02/fsharp-posting-study: https://thinky.tistory.com/category/Back-End/F%23
https://thinky.tistory.com/category/Back-End/F%23 - GitHub - Koras02/fsharp-posting-study: https://thinky.tistory.com/category/Back-End/F%23
github.com
'Back-End > F#' 카테고리의 다른 글
[F#] 1장 F# 입문하기 - C# 개발자를 위한 함수형 프로그래밍 언어 (0) | 2025.08.24 |
---|