返回文章列表

文章

Get Programming with Haskell-11

本节将介绍 Haskell 最强大的特性之一——其健全的类型系统

目录
  1. 2. 函数类型
  2. 1.字符串转换函数
  3. 2. 多个参数的函数
  4. 3.一等函数(First-class Functions)的类型
  5. 4. Summary
  6. 📎 参考文章
# 类型基础 ## 1. Haskell中的类型 Haskell 作为一门静态类型语言,或许会令你稍感意外。常见的静态类型语言还包括 C++、C# 和 Java。在这些语言(以及大多数静态类型语言)中,程序员往往需要费心维护类型标注。然而在 Haskell 中,你至今都无需为任何值显式声明类型——这得益于 Haskell 的类型推断机制:编译器能根据值的使用方式,在编译期自动推导所有值的类型!当然,你也可以选择手动指定类型。如下图所示,我们将为变量显式标注 Int 类型。 ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/4b1b167f-4b52-4031-8233-f4f2689af574/2ec1765d-d2bd-4349-81c8-31046358363a/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VJ7DLWSD%2F20260827%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260827T181128Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEHEaCXVzLXdlc3QtMiJHMEUCIQDL0j%2FqwsYyUn3Y8UuMMT75aP%2Bv%2BOaVWXEuiZF9p4N2uAIgSfYB8UOJs6VKtp1fc%2BBEi%2FLsz4D9UjKSP9ho4gF8%2FwMq%2FwMIOhAAGgw2Mzc0MjMxODM4MDUiDKKlsgrgTPx5QReU9CrcA9t2fmZ0HOobwREf8yhvYx5pO6%2BD6FwAg2BfTE5BqiPSqsCIXh9yJpvNDR9N9Ixy%2FkTtE0DnCCym6aHZS2LF6tUErUzm%2F4OiLRWM9nOWirqk1F0xwi74Tg4zax2Y53kQPx%2F4sl2DFSv%2BfI%2Fgf9Da6XbWPIYK6GCt1aD2rlQ1N4uyh5R97u9hvPgoD3b3m9ieqxULtCytKx82%2BWohZwV8yNE4OVOi3%2FjzrF4Cprf%2BcUxN2PbnXmk%2B%2FQVF5mjjAY4sygF2Qy4gJXp4EXTATEfxkHEXyYAJbp2ZFRSNVY%2FWAb0CnvQy5kcqLEjlHnl7Aw1IL4xTETfJxWPxzX8A6ByLK7%2BpRIRdOohu7%2FIBFnaFwqLfHi%2B2maCx4yDKXKHwhN9yHR8f9EQC3%2FBhzmFO7gWPCk3ZAkN0%2BQgKGgBTBCtR5bDeVo6huLN74seFF2r1jrQDvMhTRsEGU2uSsMr7Usd1S%2FOOZWJYtOQIqZO15BYoNWaAMouVOPV%2FqtN0id1BT%2BI7%2FF98eopzrPX6UYgAbdW9S4Oz06L7QGPWNLWa%2Fms2%2Fz0K6zHW0w%2BKoZ6ZqpjfaBZ%2B3nwjpNAg4DJq%2F0sCJ4wswyBRrhYA8HJ4jyfzFPMhli3TroPyMqyjQ%2FVu5ec4MIrNwdQGOqUBs3JsrilPR4ZOzZhfSkJ202Oiq0fjhJn%2Bz%2Fldw1yww4lccUvt%2FdOlw7nMWp3QhL7mvomz%2BsTBERcFd%2F1fTYyYPDv5f1utBZOasBoeQTqBbn2pPvZGmTPf0bP4WojKHqZjM8S6Ffm9yoU60rmiJL5L2KzfEIDoK5J%2FDnzTbQIRCdIs4rApbUk7gQJnbQj%2Fj5rgN5TuSgI6prJDcg2UdAoAfzzQ6MqF&X-Amz-Signature=330ad8348980afce006e27f17bafcfb4f40227934fa7f11b88cc3bfe735308b8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) Haskell 中所有类型名均以大写字母开头(函数名则需小写字母或下划线开头),以此实现语法区分。Int 类型作为编程领域最基础的数字类型之一,其本质是通过固定位数(通常为 32 位或 64 位)的二进制模式来表示数值。这种固定位宽的特性,决定了该类型存在数值表示范围的上下限。例如在 GHCi 中加载变量 x 后,通过简单运算即可探查该类型的边界值: ```haskell x :: Int x = 2 ``` ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/4b1b167f-4b52-4031-8233-f4f2689af574/898d9d9d-57fe-4a4a-9962-4ef025895d13/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VJ7DLWSD%2F20260827%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260827T181128Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEHEaCXVzLXdlc3QtMiJHMEUCIQDL0j%2FqwsYyUn3Y8UuMMT75aP%2Bv%2BOaVWXEuiZF9p4N2uAIgSfYB8UOJs6VKtp1fc%2BBEi%2FLsz4D9UjKSP9ho4gF8%2FwMq%2FwMIOhAAGgw2Mzc0MjMxODM4MDUiDKKlsgrgTPx5QReU9CrcA9t2fmZ0HOobwREf8yhvYx5pO6%2BD6FwAg2BfTE5BqiPSqsCIXh9yJpvNDR9N9Ixy%2FkTtE0DnCCym6aHZS2LF6tUErUzm%2F4OiLRWM9nOWirqk1F0xwi74Tg4zax2Y53kQPx%2F4sl2DFSv%2BfI%2Fgf9Da6XbWPIYK6GCt1aD2rlQ1N4uyh5R97u9hvPgoD3b3m9ieqxULtCytKx82%2BWohZwV8yNE4OVOi3%2FjzrF4Cprf%2BcUxN2PbnXmk%2B%2FQVF5mjjAY4sygF2Qy4gJXp4EXTATEfxkHEXyYAJbp2ZFRSNVY%2FWAb0CnvQy5kcqLEjlHnl7Aw1IL4xTETfJxWPxzX8A6ByLK7%2BpRIRdOohu7%2FIBFnaFwqLfHi%2B2maCx4yDKXKHwhN9yHR8f9EQC3%2FBhzmFO7gWPCk3ZAkN0%2BQgKGgBTBCtR5bDeVo6huLN74seFF2r1jrQDvMhTRsEGU2uSsMr7Usd1S%2FOOZWJYtOQIqZO15BYoNWaAMouVOPV%2FqtN0id1BT%2BI7%2FF98eopzrPX6UYgAbdW9S4Oz06L7QGPWNLWa%2Fms2%2Fz0K6zHW0w%2BKoZ6ZqpjfaBZ%2B3nwjpNAg4DJq%2F0sCJ4wswyBRrhYA8HJ4jyfzFPMhli3TroPyMqyjQ%2FVu5ec4MIrNwdQGOqUBs3JsrilPR4ZOzZhfSkJ202Oiq0fjhJn%2Bz%2Fldw1yww4lccUvt%2FdOlw7nMWp3QhL7mvomz%2BsTBERcFd%2F1fTYyYPDv5f1utBZOasBoeQTqBbn2pPvZGmTPf0bP4WojKHqZjM8S6Ffm9yoU60rmiJL5L2KzfEIDoK5J%2FDnzTbQIRCdIs4rApbUk7gQJnbQj%2Fj5rgN5TuSgI6prJDcg2UdAoAfzzQ6MqF&X-Amz-Signature=396f67a439495b26ade868e31858453769c279f3f159f5cfec65dbc7d8c149b2&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)