자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!
 

[F#] 2장 F# 변수와 불변성

728x90

✅ 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

 

728x90
LIST