仓库源文

所有相关源码在码云

之前实现了基本的函数功能,本周支持了如下的 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

代码统计

下面是几个主要部分的代码行数统计,格式为:上周->本周。