关于服务
翻译我是一名 Haskell 开发者,我编写的服务器服务是通过构造保证正确的,而不是偶然的。我的方法依赖于语言的最大优势:强大的静态类型系统、函数纯度和显式效果。当我用代数数据类型建模你的领域并让编译器拒绝无效状态时,整个类别的运行时错误就会消失。这不是学术理想主义,而是一种实用的方法,可以在周五晚上以与测试相同的方式交付软件,并且新团队成员可以自信地重构,因为类型将他们保持在边界内。
多年来,我在 Haskell 中构建了 HTTP API、后台工作者、数据处理管道和命令行工具。我对核心生态系统很有信心:Servant 和 Yesod 用于网络,STM 和 async 用于并发,persistent 和 hasql 用于数据库,以及熟悉的 GHC、Cabal 和 Stack 工具。我也关心性能:我使用 GHC 工具进行性能分析,有意识地考虑惰性和严格性,知道何时使用严格数据类型、解包向量或流库以保持内存平坦和高吞吐量。通过 QuickCheck 进行属性测试对我来说是一种设计工具,而不是形式主义。
你从我这里获得的代码库实际上是一个资产:小的可组合函数、清晰的模块边界和团队可以维护的文档。我同样擅长从空的代码库启动新服务到生产环境,也能加入现有的 Haskell 项目修复错误、驯服技术债务、加速代码并引导团队走向惯用的函数式模式。如果安全可变更的正确软件对你很重要,我会提供帮助。
— 使用 Servant 和 Yesod 构建后端 HTTP API
— 使用代数类型和类型类进行领域建模
— 通过 STM、async 和线程实现并发
— 通过 persistent、hasql 和 PostgreSQL 进行数据库访问
— 使用 QuickCheck 和 Hspec 进行属性测试
— 性能分析、严格性分析和优化
— 使用 GHC、Cabal、Stack 和 Nix 进行构建
多年来,我在 Haskell 中构建了 HTTP API、后台工作者、数据处理管道和命令行工具。我对核心生态系统很有信心:Servant 和 Yesod 用于网络,STM 和 async 用于并发,persistent 和 hasql 用于数据库,以及熟悉的 GHC、Cabal 和 Stack 工具。我也关心性能:我使用 GHC 工具进行性能分析,有意识地考虑惰性和严格性,知道何时使用严格数据类型、解包向量或流库以保持内存平坦和高吞吐量。通过 QuickCheck 进行属性测试对我来说是一种设计工具,而不是形式主义。
你从我这里获得的代码库实际上是一个资产:小的可组合函数、清晰的模块边界和团队可以维护的文档。我同样擅长从空的代码库启动新服务到生产环境,也能加入现有的 Haskell 项目修复错误、驯服技术债务、加速代码并引导团队走向惯用的函数式模式。如果安全可变更的正确软件对你很重要,我会提供帮助。
— 使用 Servant 和 Yesod 构建后端 HTTP API
— 使用代数类型和类型类进行领域建模
— 通过 STM、async 和线程实现并发
— 通过 persistent、hasql 和 PostgreSQL 进行数据库访问
— 使用 QuickCheck 和 Hspec 进行属性测试
— 性能分析、严格性分析和优化
— 使用 GHC、Cabal、Stack 和 Nix 进行构建