append构建动态函数
来源:互联网 发布:尼康软件人像后期 编辑:程序博客网 时间:2024/05/16 02:51
append我常用于连接两个string或者list,其实还可以这样用,将两个list连接成一个lambda表达式:
> (append (lambda (x)) '((add x 1)))(lambda (x) (add x 1))
append的第一个参数是(lambda (x)) 一个List,有两个元素,第二个参数也是一个list,子元素也是一个list
拼接后就是变成了一个完整的lambda表达式,接受x为参数,并且能够加1后返回。
进一步考虑, 这里add是写死的,如果现在将(append...)变为某个函数的body,将add作为函数参数传递进来,看看会有什么效果。
> (define (foo op) (append (lambda (x)) (list (list op 'x 1))))(lambda (op) (append (lambda (x)) (list (list op 'x 1))))> (foo 'add 2)(lambda (x) (add x 1))
注意:
1. 这里用list代替了', 因为实际使用中我发现 op参数传递会有问题,用list就好
2. foo函数实际上是一个lambda表达式,函数体是(append...)语句,该函数体在运行时会返回(append...)的结果
也就是(lambda (x) (add x 1))
本文标题是动态函数,其实指的就是参数可以是运算符,这里(foo op) 参数op就是可以为'add, 所以foo就是动态函数
进一步改进之,可以foo可以接受一个参数p:
> (define (foo op p) (append (lambda (x)) (list (list op p 'x))))(lambda (op p) (append (lambda (x)) (list (list op p 'x))))
0 0
- append构建动态函数
- append()函数
- stl string append函数
- jQuery的append()函数
- string的append函数用法
- 【help of python】append函数
- Go语言之append函数
- string的append函数用法
- python .extend() and append()函数
- Python-append和extend函数
- 动态节点排序,jQ静态方法$.inArray, 剪切append,箭头函数 jq与dom对象互转
- append
- append
- append
- append
- append
- JQuery的append动态添加div
- python中的pop函数和append函数
- CentOS6.5上搭建Docker服务
- java7新特性——使用ThreadLocalRandom产生并发随机数
- toString和new String()
- zookeeper源码分析之leader选举
- Foundation框架中各种牛瓣数据类型
- append构建动态函数
- 正则表达式的用法
- [转载]Linux更改文件文件夹所属用户组(chgrp)
- Core Animation -- CATransition
- 10. 二叉树的建立与基本操作
- 如果是初学C语言请看完 一些成功人士的心得
- Xtreme Toolkit Pro 安装及使用方法
- SQL中的递归
- Unity使用VS插件、安装之后,……