请写出 p 71 页 [习题][ejs5] 1,2,3,4 的函数的`Hindley-Milner` 类型签名
时间: 2024-05-13 15:20:43 浏览: 143
todolist-v2:使用EJS和MongoDB的Todolist(从todolist-v1继续)
1.
```haskell
addTwo :: Int -> Int
addTwo x = x + 2
```
2.
```haskell
swap :: (a, b) -> (b, a)
swap (x,y) = (y,x)
```
3.
```haskell
head' :: [a] -> a
head' (x:xs) = x
```
4.
```haskell
length' :: [a] -> Int
length' [] = 0
length' (x:xs) = 1 + length' xs
```
注意:以上类型签名仅仅是 `Hindley-Milner` 类型系统推导的结果,实际上这些函数的类型签名可以更加精确。例如,`length'` 的类型签名可以写成 `Foldable t => t a -> Int`,这样可以支持更多类型的数据结构。
阅读全文