最新要闻
- 科技改变生活!男子为“吃福币”用上金属探测器
- 性能太炸!AMD“热那亚”EPYC 9654成PassMark最快CPU
- 2.7公斤带剧毒!澳大利亚发现巨型海蟾蜍:已被安乐死
- 董宇辉回村放烟花 衣服烧了几个洞 网友:过年开心就好
- 总导演透露春晚因为沈腾启动了预案:不是因麦掉了 小品演短两分多
- 张若昀成春晚吃烧鸡第一人 华强北连夜赶工上架同款手机壳
- 世界速看:AI当街罢工 通用无人驾驶出租车路上趴窝:致拥堵20分钟
- 报道:iPhone 15系列外形焕然一新!弧形边框回归:屏幕黑边窄得创纪录
- 快消息!中期改款宝马X5即将亮相
- 男子赶集花300元买五彩大公鸡:专业养殖户都没见过
- 天天速递!兔年大年初一电影票房破七亿元 《流浪地球2》第一
- 动态:重的石头也能打出好水漂:研究应用价值竟跟飞机有关!
- 金靖小品再现最快语速 背出电脑配置:酷睿i9+RTX 4090 Ti春晚“首发”
- 撒贝宁戴兔头帽回应鞋跟高:画面让人笑翻
- 环球观点:2023年春节档唯一科幻大片!吴京主演《流浪地球2》今日上映
- 天天观速讯丨联想Thinkbook 16p公布:酷睿i9+RTX 4060 还支持磁吸配件
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
环球百事通!读函数式编程思维笔记03_权责让渡
【资料图】
1.观点
1.1.抽象隐藏了繁杂的细节,只是有时候会连同重要的考虑因素一起隐藏掉
1.2.理解掌握的抽象层次永远要比日常使用的抽象层次更深一层
1.3.交出控制权的观点:放弃对繁琐细节的掌控,关注问题域,而非关注问题域的实现
2.函数式思维的好处
2.1.将低层次细节(如垃圾收集)的控制权移交给运行时,从而消弭了一大批注定会发生的程序错误
2.2.函数式语言的简洁语法和灵活配合,才使递归成为简单可行的代码重用选项之一
2.3.运行时有能力在涉及效率的问题上替我们做决定
2.4.从频繁出现的场景中消灭掉烦人的实现细节
3.闭包(closure)
3.1.一种特殊的函数,在生成的时候,会把引用的变量全部圈到代码块的作用域里,封闭、包围起来(故名闭包)
3.1.1.闭包作为一种对行为的建模手段,让我们把代码和上下文同时封装在单一结构,也就是闭包本身里面,像传统数据结构一样可以传递到其他位置,然后在恰当的时间和地点完成执行
3.2.闭包的每个实例都保有自己的一份变量取值,包括私有变量也是如此
3.2.1.代码块实例从它被创建的一刻起,就持有其作用域内一切事物的封闭副本
3.3.在缺乏闭包特性的旧版Java平台上,Functional Java利用匿名内部类来模仿“真正的”闭包的某些行为,但语言的先天不足导致这种模仿是不彻底的
3.4.当作一种异地执行的机制,用来传递待执行的变换代码
3.5.是推迟执行原则的绝佳样板
3.6.抓住上下文,而非状态
3.6.1.“让运行时去管理状态”
4.柯里化(currying)和函数的部分施用(partial application)
4.1.向一部分参数代入一个或多个默认值的办法来实现的
4.1.1.这部分参数被称为“固定参数”
4.2.柯里化
4.2.1.从一个多参数函数变成一连串单参数函数的变换
4.2.2.结果是返回链条中的下一个函数
4.3.部分施用
4.3.1.通过提前代入一部分参数值,使一个多参数函数得以省略部分参数,从而转化为一个参数数目较少的函数
4.3.2.把参数的取值绑定到用户在操作中提供的具体值上,因而产生一个“元数”(参数的数目)较少的函数
4.4.Groovy
4.4.1.curry()函数实现柯里化
4.5.Clojure
4.5.1.(partial f a1 a2 …)函数
4.5.2.没有将柯里化实现成一种语言特性,相关的场景交由部分施用去处理
4.6.Scala
4.6.1.柯里化
4.6.2.部分施用函数
4.6.3.偏函数
4.6.3.1.PartialFunction trait是为了密切配合语言中的模式匹配特性
4.6.3.2.trait并不生成部分施用函数。它的真正用途是描述只对定义域中一部分取值或类型有意义的函数
4.6.3.3.Case语句是偏函数的一种用法
4.6.3.4.偏函数的参数被限定了取值范围
4.6.3.5.可以把偏函数用在任何类型上,包括Any
4.7.大多数函数式语言都具备柯里化和部分施用这两种特性,但实现上各有各的做法
4.8.用途
4.8.1.函数工厂
4.8.1.1.工厂方法的场合,正适合柯里化(以及部分施用)表现它的才干
4.8.2.Template Method(模板方法)模式
4.8.2.1.在固定的算法框架内部安排一些抽象方法,为后续的具体实现保留一部分灵活性
4.8.3.隐含参数
5.递归
5.1.以一种自相似的方式来重复事物的过程
5.2.对一个不断变短的列表反复地做同一件事,把递归用在这样的场合,写出来的代码就容易理解
5.3.递归操作往往受制平台而存在一些固有的技术限制,因此这种技法绝非万灵药
5.4.但对于长度不大的列表来说,递归操作是安全的
5.5.语言在管理返回值,它从递归栈里收集每次方法调用的返回结果,构造出最终的返回值
5.6.利用递归,把状态的管理责任推给运行时
6.记忆(memoization)
6.1.用更多的内存(我们一般不缺内存)去换取长期来说更高的效率
6.1.1.缓存可以提高性能,但缓存有代价:它提高了代码的非本质复杂性和维护负担
6.1.2.负责编写缓存代码的开发者不仅要顾及代码的正确性,连它的执行环境也要考虑在内
6.1.3.代码中的状态,开发者不仅要费心照应它,还要条分缕析它的一切明暗牵连
6.2.记忆的内容应该是值不可变的
6.3.保证所有被记忆的函数
6.3.1.没有副作用
6.3.2.不依赖任何外部信息
6.4.只有纯(pure)函数才可以适用缓存技术
6.4.1.纯函数是没有副作用的函数
6.4.1.1.它不引用其他值可变的类字段
6.4.1.2.除返回值之外不设置其他的变量
6.4.1.3.其结果完全由输入参数决定
6.4.2.只有在函数对同样一组参数总是返回相同结果的前提下,我们才可以放心地使用缓存起来的结果
6.5.缓存是很常见的一种需求,同时也是制造隐晦错误的源头
6.6.两种情况
6.6.1.类内部缓存
6.6.1.1.类中的缓存就代表类有了状态,所有与缓存打交道的方法都不可以是静态的,于是产生了更多的连锁效应
6.6.2.外部调用
6.7.两种实现方式
6.7.1.手工进行状态管理
6.7.2.采用记忆机制
6.8.在命令式的思路下,开发者是代码的主人(以及一切责任的承担者)
6.9.我们写出来的缓存绝不可能比语言设计者产生的更高效,因为语言设计者可以无视他们给语言定的规矩:开发者无法触碰的底层设施,不过是语言设计者手中的玩物,他们拥有的优化手段和空间是“凡人”无法企及的
6.9.1.上帝视角
6.10.Groovy
6.10.1.先将要记忆的函数定义成闭包,然后对该闭包执行memoize()方法来获得一个新函数,以后我们调用这个新函数的时候,其结果就会被缓存起来
6.10.2.memoizeAtMost(1000)
6.11.Clojure
6.11.1.(memoize )
6.12.Scala
6.12.1.没有直接提供记忆机制,但它为集合提供的getOrElseUpdate()方法已经替我们承担了大部分的实现工作
6.13.Java 8
6.13.1.没有直接提供记忆特性,但只要借助它新增的lambda特性,就可以轻松地实现记忆功能
7.缓求值(lazy evaluation)
7.1.尽可能地推迟求解表达式
7.1.1.昂贵的运算只有到了绝对必要的时候才执行
7.1.2.可以建立无限大的集合,只要一直接到请求,就一直送出元素
7.1.3.按缓求值的方式来使用映射、筛选等函数式概念,可以产生更高效的代码
7.1.4.减少占用的存储空间。假如能够用推导的方法得到后续的值,那就不必预先存储完整的列表了——这是牺牲速度来换取存储空间的做法
7.2.非严格求值(non-strict)的(也叫缓求值,lazy)
7.2.1.常用的非严格求值语言有Haskell
7.3.Totally Lazy框架(Java)
7.4.Groovy
7.4.1.缓求值列表是函数式语言普遍具备的特性
7.4.1.1.LazyList
7.4.2.暂缓初始化昂贵的资源,除非到了绝对必要的时候
7.4.3.可以用来构建无限序列,也就是没有上边界的列表
7.4.4.缓求值列表特别适用于资源的生产成本较高的情况
7.5.Clojure
7.5.1.数据结构都是默认缓求值的
7.6.Scala
7.6.1.没有把一切都默认安排成缓求值的,而是在集合之上另外提供了一层缓求值的视图
7.7.缓求值的字段初始化
7.7.1.Scala
7.7.1.1.val声明前面加上“lazy”字样
7.7.1.1.1.令字段从严格求值变成按需要求值
7.7.2.Groovy
7.7.2.1.抽象语法树(Abstract Syntax Tree,AST)
7.7.2.1.1.@Lazy标注
8.元函数技法
8.1.操纵的对象是函数本身,而非函数的结果
8.2.柯里化
环球百事通!读函数式编程思维笔记03_权责让渡
科技改变生活!男子为“吃福币”用上金属探测器
性能太炸!AMD“热那亚”EPYC 9654成PassMark最快CPU
2.7公斤带剧毒!澳大利亚发现巨型海蟾蜍:已被安乐死
【天天新视野】maven的安装和配置
董宇辉回村放烟花 衣服烧了几个洞 网友:过年开心就好
总导演透露春晚因为沈腾启动了预案:不是因麦掉了 小品演短两分多
B. Emordnilap【Codeforces Round #845 (Div. 2) and ByteRace 2023】
张若昀成春晚吃烧鸡第一人 华强北连夜赶工上架同款手机壳
世界速看:AI当街罢工 通用无人驾驶出租车路上趴窝:致拥堵20分钟
报道:iPhone 15系列外形焕然一新!弧形边框回归:屏幕黑边窄得创纪录
快消息!中期改款宝马X5即将亮相
男子赶集花300元买五彩大公鸡:专业养殖户都没见过
天天速递!兔年大年初一电影票房破七亿元 《流浪地球2》第一
动态:重的石头也能打出好水漂:研究应用价值竟跟飞机有关!
金靖小品再现最快语速 背出电脑配置:酷睿i9+RTX 4090 Ti春晚“首发”
撒贝宁戴兔头帽回应鞋跟高:画面让人笑翻
环球观点:2023年春节档唯一科幻大片!吴京主演《流浪地球2》今日上映
环球实时:学习笔记——拦截器与过滤器的区别;拦截器概述;拦截器中三个方法
天天观速讯丨联想Thinkbook 16p公布:酷睿i9+RTX 4060 还支持磁吸配件
天天信息:苹果正在开发类似iPad的智能显示器!要进军智能家居
当前看点!笔记本外接显卡坞实测:RTX 4090损失20%性能 等同RTX 4080水准
全球今热点:支付宝五福开奖!你分到了多少?
Ubuntu 终端美化(oh-my-zsh)
技嘉AORUS Gen4 7300 SSD换上新闪存:顺序速度提升明显 飙到7.3GB/s
全球热点!七彩虹上架新款RTX 3050显卡:降低功耗、1999元
天天热文:2023年春晚今晚呈现:霸榜微博热搜
全球微动态丨非遗南音元素首登春晚:被称为“中国音乐史上的活化石”
《漫威复仇者联盟》即将停运 玩家:微交易毁了游戏
环球快资讯丨丰盛!神舟十五号乘组太空年夜饭菜单出炉:有熏鱼、水饺等19样
环球即时:Wallpaper壁纸提取得到tex文件,tex文件转图像,tex文件转png,tex文件提取壁纸,Wallpaper壁纸提取无法得到图像文件,ReP
环球新动态:学习笔记——SpringMVC文件上传与下载
五彩斑斓的烟花到底是化学反应还是物理反应?
Ubuntu22.04 安装 ssh
快看:西北唯一!西安全城红绿灯倒计时上线百度地图:支持语音提醒
世界今日报丨《流浪地球2》预售票房破2亿!春节档七部新片扎堆 你看好谁
当前报道:GO语言之环境搭建和基本命令
【世界聚看点】每天一部大片!腾讯视频线上春节档来了 大年初一必看
旅日大熊猫“香香”即将回国:日本民众不舍排长队告别
JavaScript 作用域和闭包
来自38万公里外!我国玉兔二号月球车发新照:这次是“兔子脚印”
世界热门:SOFAJRaft模块启动过程
全球今亮点!野性觉醒!动物园办虎兔交接仪式:兔子差点成“盘中餐”
【环球新视野】GXG男士休闲长款羊毛大衣:到手199元
天天热头条丨行业唯一!雅迪电动车官宣登上2023年央视春晚
世界今亮点!寒气逼人!“裁员潮”席卷美科技巨头:谷歌母公司将裁1.2万人
王晶武侠电影 《天龙八部之乔峰传》今日上线“爱优腾”三大平台
世界第一高楼迪拜塔点亮中国红:春晚吉祥物“兔圆圆”亮相
最低气温跌破-50摄氏度 漠河游客:刚出门就想钻回炕上
世界今热点:[数据结构] 队列 (C语言)
Wallpaper Engine壁纸提取工具,pkg文件提取静态图片,pkg文件转jpg,pkg文件转png,pkg文件转图像,pkg文件提取图像
【速看料】用上自研3.0T发动机 坦克700实车曝光:水泥灰质感十足
天天微速讯:做清洁的噩梦!潮汕女子晒大扫除:一家人出动擦镂空家具
天天简讯:LeetCode.面试题02.05-链表求和-题解分析
当前快讯:春节假期7天免通行费!交通部:目前全国高速公路通行畅通
大批AMD RX 6000挂掉的原因找到了!挖矿、湿度影响
专家:春节期间最好每餐七分饱
环球热文:比苹果良心!微信支付春节福利来了:App Store充值9折
环球最新:毫米波无线投屏带来全新体验 红魔电竞显示器上手
C 忽远忽近的距离【2023牛客寒假算法基础集训营3 】
环球今日报丨戴尔发布新款32寸6K显示器:剑指苹果Pro Display XDR
焦点精选!徐志胜首登春晚:担心在春晚嘴瓢每天练绕口令
当前快看:土耳其上空出现碟形透镜云:恍若UFO、相当震撼
年终奖入手iPhone 14:听我的别贴膜 没啥用
一口一只小苍蝇:不恶心吗?
3小时挪动300米堵哭了!去海南自驾请注意:需预约购票
世界关注:读函数式编程思维笔记02_转变思维
【世界新视野】《塞尔达传说:王国之泪》即将发售 网友抱怨任天堂还没开始宣发
当前观点:广东游客专程来感受-50℃的漠河 有车企趁极寒测试车辆性能
每日消息!张朝阳用物理知识解构《流浪地球2》:吴京听惊讶 竖拇指点赞
【世界报资讯】首发4899元!机械革命推出新款蛟龙5游戏本:锐龙7 7735H+RTX 3050
热点聚焦:10余款皮肤齐上架!玩家深夜把《王者荣耀》充值系统挤崩溃了
学习笔记——SpringMVC消息转换器概述;使用消息转换器处理请求报文;使用消息转换器处理响应报文;使用消息转换器处理Json格式数据
今日热讯:D 宿命之间的对决【2023牛客寒假算法基础集训营3】
用AutoHotkey解决B站客户端缓存视频m4s合并成mp4提示解析失败
天天热门:刚提特斯拉Model Y电池遇故障 五天坏两次!车主“愤怒”要求换新车
近十日全国平均气温为历史第三暖:大部分地区天气利于出行
世界讯息:HGAME2023_WP_WEEK2
双向链表
每日短讯:爱做美甲女生注意了!过年美甲小心致癌突变
实时焦点:2023央视春晚没有贾玲张小斐:此前连续5年登台
苹果着手开发iPhone 16 Pro!灵动岛要扩大
《流浪地球2》首波口碑好评如潮 吴京:希望中国电影以该片为底气
关注:Intel扼杀超频!13代酷睿再也不能“白嫖”了
世界球精选!iPhone 14 Pro系列供需已平衡:之前要等一个多月 一机难求
【环球时快讯】了解Spring
刷掌支付快到了:腾讯新刷掌设备专利发布
最新消息:身家千万老板被骗到缅甸做诈骗:3个月暴瘦40多斤
世界快消息!Lisp的求值规则
每日速讯:需求激增!国内客运航班量连续13天上涨
焦点热门:禁止中国玩家参加炉石赛事引众怒 用户抵制卸载无惧:暴雪态度没缓和
【世界速看料】全力推动首车落地!贾跃亭回应FF落地湖北黄冈:何时归国依旧成谜
环球即时:打工一年享受享受怎么了 HKC 27寸4K 144Hz显示器3449元
每日热讯!2023春节档预售票房破5亿:张艺谋电影《满江红》领跑
世界快消息!我的2022年终总结
全球热议:春节宠物寄养生意火爆!猫狗“标间”599元/天 “总统套房”5400元/月
广州明起向外卖骑手、快递员发“春节补贴”:每人每天150元
【焦点热闻】男子开“电动爹”回东北:200公里充次电 充了14次
【全球独家】微软XGP彻底赢麻了 索尼再次面临“断气”风险
国产最强皮卡!长城山海炮6x6版内饰谍照:相当豪华