木兰编程语言重现:匿名函数,lambda 表达式初步
之前实现了基本的函数功能,本周支持了如下的 lambda 表达式:
边长 -> 边长 * 边长
用->
似乎符合数学中“映射”的表示(下摘自 wiki “Lambda calculus”页):
可以在 map、filter 中使用:
print(list(map(边长 -> 边长 * 边长, [1, 2, 3]))) => [1, 4, 9]
也可以在块中包含多个语句:
print(list(map(边长 -> { 面积 = 边长 * 边长 return 面积 }, [1, 2, 3])))
如果这些语句较短(中文命名的标识符往往更短),也可以用分号分隔后放在一行内:
print(list(map(边长 -> { 面积 = 边长 * 边长; return 面积 }, [1, 2, 3])))
暂时只添加了单个形参的 lambda 表达式,还有些用法仍在摸索。
还有一种类似功能的匿名函数写法:
print(list(map(func (边长) { 面积 = 边长 * 边长; return 面积 }, [1, 2, 3])))
它已经支持多形参,也可以在调用时直接跟实参:
print(func (长, 宽) { 面积 = 长 * 宽; return 面积 }(3, 4)) => 12
代码统计
下面是几个主要部分的代码行数统计,格式为:上周->本周。
- 测试
- 木兰测试用例:1075 -> 1090
运行测试.py
,检验所有木兰测试代码片段:145 -> 148- 未变
test语法树.py
,确保生成的语法树与原始版本一致:63
- 实现:1941 -> 2075
分析器/语法分析器.py
:824 -> 886分析器/语法树.py
,功用/调试辅助.py
,包括对 ast 库的中文封装:260 -> 271分析器/词法分析器.py
:184 -> 187环境.py
,加载木兰模块:87 -> 88- 未变
演示高亮.py
:98中.py
,主程序:35

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
SOFARPC v5.7.4 发布,蚂蚁金服开源 Java RPC 框架
本期发布内容 新特性 允许用户设置 Triple 服务的版本 优化 protobuf 编译器升级到 0.0.2 hibernate-validator 升级到 5.3.5.Final jackson-databind 升级到 2.9.10.5 BUG 修复 修复了 Hessian over triple 不支持基本类型的问题 Abstract Enhancements to the sofa-rpc framework and some bug fixes (requires JDK8 version support). We encourage everyone use 5.6.x to upgrade. For details, please refer to all commits. Compatibility Note JDK8 required Consul registry redesigned, not compatible with 5.5.0 New Features PR 958allow user set the version of triple Enhance...
- 下一篇
一文了解 Kubernetes
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! Docker 虽好用,但面对强大的集群,成千上万的容器,突然感觉不香了。 这时候就需要我们的主角 Kubernetes 上场了,先来了解一下 Kubernetes 的基本概念,后面再介绍实践,由浅入深步步为营。 关于 Kubernetes 的基本概念我们将会围绕如下七点展开: 一、Docker 的管理痛点 如果想要将 Docker 应用于庞大的业务实现,是存在困难的编排、管理和调度问题。于是,我们迫切需要一套管理系统,对 Docker 及容器进行更高级更灵活的管理。 Kubernetes 应运而生!Kubernetes,名词源于希腊语,意为「舵手」或「飞行员」。Google 在 2014 年开源了 Kubernetes 项目,建立在 Google 在大规模运行生产工作负载方面拥有十几年的经验的基础上,结合了社区中最好的想法和实践。 K8s 是 Kubernetes 的缩写,用 8 替代了 「ubernete」,下文我们将使用简称。 二、什么是 K8s ? K8s 是一个可移植的、可扩展的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7安装Docker,走上虚拟化容器引擎之路