`
javasee
  • 浏览: 990161 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

从表达式到函数:表面的简洁

阅读更多

scheme/lisp中,(基于运算元、运算符的)表达式运算是一个语法基础,但它们被称为函数式语言而非表达式语言。那么,它们是如何解释函数式语言的呢?

一个lisp的函数在语法上应当书写为如下格式:
----------------
((lambda (p1...pn) e) a1...an)
----------------

这是什么意思呢?其实,这其中的p1..pn为形式参数,而a1..an为实际参数,而lambda则是一个从天上掉下来的概念,它被用来作为一个函数标识符的命名——就好象四则运算中的x,y,z只是命名一样。换成JavaScript的语法,就是这样:

----------------
function lambda(p1,p2) { // ... pn
e
}
lambda(a1,a2); // ... an
----------------

当然,javascript作为函数式语言,你也可以声明即调用。如下:

----------------
(function lambda(p1,p2) {
e
})(a1,a2))
----------------

所以,事实上较规范的lisp函数调用语法风格与上面的并没有什么不同:

----------------
((lambda (p1,p2)
e
) a1 a2)
----------------

按照约定,e是一个或一组表达式。这里就回到上一篇文章(在这里)说的了:表达式是语言基础:
-----------
(symbol)
-----------

在表达式、值(以及变量)、函数等基本概念上,javascript与lisp/scheme没有什么不同。不过,后者是面向表(list,一个值或函数的序列)来处理的,而javascript则面向关联数组(属性包,一个“名-值”对的表)。

分享到:
评论

相关推荐

    MATLAB 基本规则与函数

    4. 矩阵构造:可以通过索引、范围或函数构造矩阵,如`zeros(3,3)`创建3x3的零矩阵,`linspace(1,10,5)`创建从1到10等差的5个元素向量。 四、运算优先级与括号 1. 优先级:MATLAB遵循数学中的运算优先级规则,括号...

    非凸优化算法的测试函数Schwefel函数(Schwefel function)的Python代码,实现3D效果

    Schwefel函数的标准形式为:f(x) = - Σ (x_i * sin(√|x_i|)),其中x为实数向量,i取值从1到n。接着,编写一个Python函数来计算这个表达式的值。之后,可以利用numpy来生成一个向量空间的坐标点集,并计算每个点...

    Python技术代码规范.docx

    - 命名规则:变量名和函数名应简洁明了,避免使用保留字,推荐使用小写字母和下划线。 - 注释:使用 `%` 符号开始单行注释,多行注释可以使用 `%%` 开头。 - 缩进:虽然 Matlab 不像 Python 那样依赖缩进来区分...

    非凸优化算法的测试函数Eggholder函数(Eggholder function)的Python代码,实现3D效果

    2. 定义Eggholder函数,按照其数学表达式编写相应的Python函数。 3. 生成x和y的数值范围,通常是通过等间隔的数值序列来创建一个二维网格。 4. 计算每个网格点上的函数值,将这些值存储在三维数组中。 5. 使用...

    .Net4.0 linq to sql 和lambda表达式的运用

    Lambda表达式是.NET 3.5引入的另一个重要特性,它是一种匿名函数的表示方式,可以在需要函数的地方直接定义。Lambda表达式在配合Linq使用时,可以简洁地表达查询条件和操作,大大提高了代码的可读性和可维护性。例如...

    以地心纬度为变量的常用纬度正反解符号表达式.docx

    第三扁率 n 是椭球形状的另一个描述参数,它与偏心率 e 相关,并且在某些情况下,使用 n 的幂级数形式可能带来更简洁的表达式。 对于等距离纬度的反解表达式,即从等距离纬度求解地心纬度,可以通过符号迭代法进行...

    MATLAB函数大全.doc.zip

    `plot`函数绘制二维线图,`scatter`绘制散点图,`bar`绘制柱状图,`surf`和`mesh`用于三维表面和网格图,`figure`和`subplot`管理图形窗口和子图。 5. **文件输入/输出**:`load`读取数据文件,`save`保存变量到...

    matlab从入门到精通 源码.rar

    它以其简洁的编程语法、丰富的数学函数库和强大的图形绘制能力,被广泛应用于工程计算、科学研究、数据分析等领域。本资料“matlab从入门到精通 源码.rar”提供了学习MATLAB的源代码实例,是初学者快速掌握MATLAB...

    东南大学 MATLAB课件

    从给定的文件信息来看,这是一份关于MATLAB的详尽教程,涵盖了从基础知识到高级功能的多个方面。以下是对这份文档所提及的关键知识点的深入解析: ### MATLAB概述 MATLAB,全称为Matrix Laboratory(矩阵实验室)...

    Matlab工程应用基础

    - **数据导入导出**:学会从CSV、Excel等格式导入数据,以及导出数据到文件。 - **统计分析**:运用mean、std、corrcoef等函数进行基本统计分析。 - **滤波与频谱分析**:掌握数字滤波器设计,使用fft进行傅里叶变换...

    径向基函数方法在曲面重建中的应用.pdf

    Carr等人提出了一种利用多重调和径向基函数重建曲面的方法,它可以有效地从散乱点云中构建出光滑的流形表面。这种方法的表达式简洁且具有一定的延展性,有助于修复点云模型中可能出现的局部空洞。然而,由于计算复杂...

    Matlanb详细手册 web版

    - **三维图形**:利用surf、slice等函数创建三维表面和切片图。 6. **符号计算** - **符号变量与表达式**:syms创建符号变量,可以进行精确的数学运算。 - **符号运算**:如解方程(solve)、求导(diff)、积分...

    MATLAB_introduction.rar_matlab manual

    它以其简洁的编程环境和丰富的函数库,使得复杂的数学问题得以简化,提高了工作效率。本手册《MATLAB Introduction》将深入浅出地介绍MATLAB的基本概念、语法特性及其在实际应用中的操作技巧。 1. **MATLAB环境** ...

    matlab学习2.docx

    - **作图方法**:MATLAB提供了丰富的图形函数,如`plot`用于绘制二维线图,`surf`用于三维表面图,可以进行图形定制和交互操作。 6. **帮助和在线资源**: - **help**命令:获取函数或概念的帮助信息。 - **look...

    MATLAB数学分析

    其内置的函数丰富,覆盖了从基础数学运算到高级数值分析的各个方面。 - **常量与特殊变量**:如π、eps(浮点数精度)、inf(无穷大)和NaN(非数字)等,这些特殊变量在数值计算中起着关键作用。 - **特殊符号**:...

    代码,代码编程教学,matlab源码.zip

    MATLAB语法简洁,易于上手,适合初学者入门。 2. **基本数据类型**:MATLAB中的基本数据类型包括标量(scalar)、向量(vector)、矩阵(matrix)和数组(array)。理解这些数据结构对于编写高效代码至关重要。 3....

    基于Python实现正丁醇的表面张力与吸附量实验数据处理源代码+实验数据+拟合图

    拟合图是数据分析中常用的一种方式,通过选择合适的函数模型对数据进行拟合,可以得到更为精确的数学表达式,进一步分析实验数据的规律性。 整个项目包含以下几个主要部分: 1. 数据采集:首先需要进行正丁醇的...

    东华大学633量子力学2021年考研专业课初试大纲.pdf

    - **黑体辐射**:物理学中理想的物体,能够吸收所有入射到其表面的电磁辐射而无任何反射或透射。 - **普朗克常数(h)**:量子力学中的基本常数,用于描述微观粒子的行为。它的值约为\(6.626 \times 10^{-34} \text{...

    javaScript深入大纲

    1. **函数声明与函数表达式的区别** - 函数声明:提升至顶部,在代码执行前就可被访问。 - 函数表达式:按顺序执行,未被提升。 2. **7种调用方式** - 普通调用:作为全局对象的方法调用。 - 构造函数调用:...

Global site tag (gtag.js) - Google Analytics