Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13714
  • 博文数量: 2
  • 博客积分: 1461
  • 博客等级: 上尉
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-17 10:11
文章分类

全部博文(2)

文章存档

2009年(2)

我的朋友
最近访客

分类:

2009-04-24 21:30:12

我们通常写代码是这样写的:

add2 x = x + 2
mySum xs = foldr (+) 0 xs

但 partial function 为我们提供了一个简写的方法
例如:

add2 = (+2)
mySum = foldr (+) 0

上面的 "(+2)" 和 "foldr (+) 0" 就是 partial function

Prelude> let add2 = (+2)
Prelude> let mySum = foldr (+) 0
Prelude> :t add2
add2 :: Integer -> Integer
Prelude> :t mySum
mySum :: [Integer] -> Integer
Prelude> :t (+2)
(+2) :: (Num a) => a -> a
Prelude> :t foldr (+) 0
foldr (+) 0 :: (Num a) => [a] -> a

这里的 (+2) 很特殊,也可以写为 (2+)

原来一直以为只有 + - * / ^ 等这几个运算符可以这样,没想到下面也可以
可以试试这一个:

eachBy = (`map` [1, 2, 3, 4])
addEach2To = ((+2) `map`)

Prelude> let eachBy = (`map` [1, 2, 3, 4])
Prelude> let addEach2To = ((+2) `map`)
Prelude> eachBy (+2)
[3,4,5,6]
Prelude> addEach2To [1, 2, 3, 4]
[3,4,5,6]


阅读(942) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Haskell 中的语法糖

给主人留下些什么吧!~~