F# 핵심 라이브러리(FSharp.Core) — 모든 F# 코드가 쓰는 라이브러리

F# 핵심 라이브러리(FSharp.Core) — 모든 F# 코드가 쓰는 라이브러리

F#로 코드를 짜면 어떤 코드든 항상 깔리는 라이브러리가 있어요. 바로 오늘 살펴볼 FSharp.Core예요. 이름에서 짐작할 수 있듯 F#의 핵심(Core) 정의를 담고 있는데, 어떤 기능이 어느 네임스페이스에 들어 있는지 하나씩 정리해 볼게요.

출처: F# Core Library Documentation — FSharp.Core 공식 문서

본문

이 문서는 모든 F# 코드에서 쓰이는 FSharp.Core 라이브러리의 문서예요. FSharp.Core는 옵션·함수·연산자·결과·문자열 서식 같은 F#의 기본 정의부터, 목록·맵·시퀀스 같은 컬렉션 연산, 그리고 인용(quotation)·리플렉션·이벤트·비동기 프로그래밍·네이티브 상호운용 같은 라이브러리 기능까지 한곳에 모아 두고 있어요. 정리하면 F#이라는 언어가 동작하는 데 필요한 '기본 살림살이'를 담은 상자라고 생각하면 돼요.

FSharp.Core는 크게 다음 네임스페이스로 구성돼요.

  • FSharp.Core — 옵션, 함수, 연산자, 결과, 문자열 서식의 기본 정의.
  • FSharp.Collections — 목록, 배열, 집합, 맵, 시퀀스 등 컬렉션에 대한 연산. F# 컬렉션 형식도 함께 보세요(F# 언어 가이드).
  • FSharp.Control — 비동기 프로그래밍, 이벤트, 에이전트를 위한 라이브러리 기능. F# 비동기 프로그래밍도 함께 보세요(F# 언어 가이드).
  • FSharp.Linq — F# 쿼리 구문과 .NET Expression 상호운용을 위한 라이브러리 기능. F# 쿼리 식도 함께 보세요(F# 언어 가이드).
  • FSharp.Quotations — F# 인용(quotation)을 위한 라이브러리 기능. F# 코드 인용도 함께 보세요(F# 언어 가이드).
  • FSharp.Reflection — 실행 시점에 F# 형식과 값에 대한 추가 정보를 얻기 위한 라이브러리 기능. System.Reflection이 제공하는 것에 덧붙여 쓸 수 있어요. F# Wiki Book의 Reflection도 함께 보세요.
  • FSharp.NativeInterop — 네이티브 상호운용을 위한 기본 기능. F# 외부 함수도 함께 보세요(F# 언어 가이드).
  • FSharp.Core.CompilerServices — 형식 공급자(type provider)와 F# 컴파일러가 생성한 코드를 지원하는 라이브러리 기능. F# 형식 공급자도 함께 보세요(F# 언어 가이드).

눈에 띄는 점이 하나 있다면, 대부분의 네임스페이스가 같은 이름의 '언어 가이드' 문서를 함께 가리킨다는 거예요. 즉 FSharp.Core는 그냥 API만 제공하는 게 아니라, F# 문법의 여러 기능(비동기, 쿼리, 인용, 형식 공급자)이 실제로 이 라이브러리 위에서 구현되어 있어요. 그래서 컬렉션을 쓰다 보면 FSharp.Collections를, 비동기를 쓰다 보면 FSharp.Control를 자연스럽게 만나게 됩니다.

더 알아보기

  • FSharp.Core API 레퍼런스: 네임스페이스별 상세 API는 이 문서 사이트의 레퍼런스 페이지(reference/fsharp-core.html, reference/fsharp-collections.html 등)에서 확인할 수 있어요.
  • 문서에 기여하기: 이 문서 사이트와 내용에 기여하려면 fsharp/fsharp-core-docs GitHub 저장소의 안내를 참고하세요.
  • F# 언어 가이드: 컬렉션 형식, 비동기 프로그래밍, 쿼리 식, 코드 인용, 형식 공급자 등 각 라이브러리 기능의 문법 설명은 F# 설명서에서 볼 수 있어요.