重写过程中,发现这种做法能加深对递归的理解,而且reduce还体现了函数式编程是如何通过参数传递来实现命令式编程中的状态改变的.

(define (imap f x . y)(if (null? y) (let recur ((x x)) (if (null? x) '()
            (cons (f (car x)) (recur (cdr x))))) (let recur ((x x) (y y)) (if (null? x) '()
            (cons (apply f (car x) (imap car y)) (recur (cdr x) (imap cdr y)))))))(map + '(1 2 3) '(1 2 3) '(1 2 3))
(imap + '(1 2 3) '(1 2 3) '(1 2 3))

(define (filter f x)(let recur ((x x))(if (null? x)'()(if (f (car x))(cons (car x) (recur (cdr x)))(recur (cdr x))))))(filter even? '(1 2 3 4 5))
(define (reduce f x . ini)(if (null? ini)(let recur ((res (f (car x) (cadr x)))(x (cddr x)))(if (null? x)res(recur (f res (car x)) (cdr x))))(reduce f (cons (car ini) x))))(reduce + '(1 2 3 4))
(reduce + '(1 2 3 4) 10)
(reduce * '(1 2 3 4))
(reduce * '(1 2 3 4) 10)

结果:

(3 6 9)
(3 6 9)
(2 4)
10
20
24
240
> 

转载于:https://www.cnblogs.com/xiangnan/p/3391437.html

用scheme重写Python的三大函数map reduce 和filter相关推荐

  1. python高阶函数map_简单了解python高阶函数map/reduce

    高阶函数map/reduce Python内建了map()和reduce()函数. 我们先看map.map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每 ...

  2. python内置函数map reduce filter详解,面试必备知识

    面试时候经常会考到 map reduce filter 这三个内置函数的使用 map() 函数 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调 ...

  3. python内置函数map/reduce/filter

    为什么80%的码农都做不了架构师?>>>    python有几个内置的函数很有意 思:map/filter/reduce,都是对一个集合进行处理,filter很容易理解用于过滤,m ...

  4. Python高阶函数(map,reduce,filter)

    python内置常用高阶函数:. 称为 函数式编程,常常有一下特点 函数本身可以赋值给变量,赋值后变量为函数: 允许将函数本身作为参数传入另一个函数: 允许返回一个函数. 按常用排序 map() 函数 ...

  5. Python自学记录——高阶函数map/reduce、filter、sorted

    Python内置了四个强大的函数,如标题所示,下面来记录说明下: map 看见此 map 需要注意,python中的 map 和 java 中的 map,是不同的,java中的 map 与 pytho ...

  6. 剑指 Offer 面试题45:把数组排成最小的数——Python内置函数 map()、__lt__()、join()、sorted()

    题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 输出结果可能非常大,所以需要返回一个字符串而不是整数. 拼接起来的数字可能会有前导 0,最后结果 ...

  7. python中高阶函数map怎么用_python六十课——高阶函数之map

    1.高阶函数: 特点:函数的形参位置必须接受一个函数对象 分类学习: 1).map(fn,lsd1,[lsd2...]): 参数一:fn --> 函数对象 参数二:lsd1 --> 序列对 ...

  8. py函数式编程(高阶函数map/reduce/filter/sorted、闭包函数/返回函数、匿名函数lamber、@装饰器decorator、偏函数functool.partial())

    #py函数式编程.py #高阶函数map/reduce/filter/sorted.闭包函数/返回函数.匿名函数lamber.@装饰器decorator.偏函数functool.partial()# ...

  9. python 高级使用实例_Python中的高级函数map/reduce使用实例

    怎么用Python写mapreduce,请举例说明,初学者,请1.lambda # 匿名函数# 基本用法 lambda x: x**2 # 第一个参数,然后是表达式# 也可以使用如下(lambda x ...

最新文章

  1. ASP.NET mvc 自定义验证和Filter过滤器传参
  2. c#_Dictionary集合
  3. Android笔记一.深入理解Intent和IntentFilters(一)
  4. 深入理解面向对象设计的七大原则
  5. deprecated_@Deprecated新外观可能是什么?
  6. 链表(单链表、双链表、内核链表)
  7. OpenCV调用摄像头+灰度图+高斯滤波+Canny算子
  8. python3.9性能提升_Python 3.9 性能优化:更快的 list()、dict() 和 range() 等内置类型-阿里云开发者社区...
  9. Web3.0中国峰会将于7月在成都召开
  10. FFMPEG实现RTSP中H264数据流解码 并且实时播放
  11. unity 使用像素实现墙面子弹留孔效果(给已有贴图模型叠加贴图)
  12. 编程列入高考-青少儿编程学习-Python那些事
  13. HDU 5238 Calculator(中国剩余定理+线段树)
  14. python生成基础头像_python个性化头像
  15. 2021寒假MISC打卡DAY2
  16. 基于Java基础-面向对象实现植物大战僵尸简易版
  17. 2015年上半年系统集成项目管理工程师案例计算题精讲(乔俊峰)-乔俊峰-专题视频课程...
  18. 常用正则表达式爬取网页信息及HTML分析总结
  19. Unity动画 Legacy、Generic和Humanoid
  20. 告诉你一个去除PDF文件水印简单快速的方法

热门文章

  1. 怎么去除CSDN上的广告?
  2. 简述ajax的重构原因,Ajax 重构的步骤
  3. sp MySQL 导入_mysql数据导入redis
  4. axios不发起请求_axios 发 post 请求的问题
  5. 递归删除单链表中所有值为x的元素_如何纯递归反转链表的一部分
  6. 《STL源码剖析》--知识点
  7. 【数据结构与算法】5. C++中 list、deque、vector对比
  8. Log4j使用详解(log4j.XML格式)
  9. Java中的10颗语法糖
  10. HTML 5 样式指南和代码约定