`
ruilin215
  • 浏览: 1142710 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

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

阅读更多

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遵循数学中的运算优先级规则,括号...

    Python技术代码规范.docx

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

    .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工程应用基础

    - **数据导入导出**:学会从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....

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

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

    javaScript深入大纲

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

    数学软件 Matlab- Matlab 基础

    **文件操作**涉及到读取和写入数据到文件: 1. **读取文件**:如使用`importdata`函数读取文本文件。 2. **写入文件**:使用`fprintf`等函数将数据写入文件。 3. **二进制文件操作**:对于二进制文件,MATLAB也提供...

    Matlab.rar_matlab pdf_site:www.pudn.com

    它的语法简洁,接近数学表达式,使得代码易于理解和编写。对于初学者来说,了解Matlab的基础知识至关重要,包括变量定义、矩阵操作、流程控制(如for循环和if语句)、函数定义和调用等。 1. 变量与数据类型:在...

    [ICCV 2021]具有局部表面几何形状的CPD ( LSG-CPD ).zip

    Matlab的语法与数学表达式和矩阵操作非常相似,这使得算法的表达更加简洁、清晰。 3. 快速原型开发:Matlab提供了一个交互式的开发环境,可以快速进行算法的原型开发和测试。开发者可以实时查看和修改变量、绘制图形...

Global site tag (gtag.js) - Google Analytics