SuperAPI AI 工具集

fsharp

编程与开发

查看项目

更新于 10-16 00:05

技能介绍

用途:在 .NET 仓库中编写、审查或现代化 F# 代码,涉及 .fs、.fsx、.fsi、.fsproj 文件时使用;适合领域逻辑需要记录、可区分联合、option、Result 或穷举模式匹配的场景,也适合需要强类型函数式模型而非可空基元状态、以及 F# 与 C# 等 .NET 库互操作的场景。不适用于 C# 语言特性选择、仅分析器/格式化/CI 工作、不影响项目代码的一次性 REPL 脚本探索,以及非 .NET 函数式语言。

主要能力:以记录表示具名产品数据,以可区分联合表示封闭状态,用 option 表示缺失,用 Result 表示预期失败;用管道组织可读的数据转换;提供 .NET 互操作指导,如把 F# 内部模型转换为 DTO、方法或 Try* 模式,在 F# 优先代码中使用 Async<'T>,在互操作边界使用 task { } 或返回 Task 的 API。

使用方式:用 .NET SDK 模板创建项目,例如 dotnet new classlib -lang "F#" -o src/Domain、dotnet new console -lang "F#" -o src/App、dotnet new xunit -lang "F#" -o tests/Domain.Tests,再执行 dotnet sln add、dotnet add reference、dotnet build。F# 按项目文件中列出的顺序编译文件,定义类型与模块要先于使用它们的文件,新增文件需有意更新 .fsproj 的编译列表,不要假设通配符顺序。FSharp.Core 通常由 F# SDK 项目提供,仅当仓库有确定性版本策略时才显式添加或固定。

适用场景:领域建模、校验组合、数据读取与转换、为 C# 调用方编写稳定的公共互操作边界,以及为 F# 代码做项目配置与验证。

限制:F# 可区分联合应保留在 F# 边界内,除非 C# 使用方预期理解其生成形状;公共跨语言 DTO 使用记录或显式类;内部用 option,在 C# 优先的公共边界转换为可空注解、Try* 方法或 Result;预期领域失败不用抛异常,异常用于意外的基础设施失败。验证可运行 dotnet build、dotnet test、dotnet fsi scripts/check.fsx,新增 F# 文件时还应检查项目文件差异以确认编译顺序。