ImageVerifierCode 换一换
格式:PPTX , 页数:25 ,大小:670.34KB ,
资源ID:1399670      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1399670.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ML语言二.pptx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ML语言二.pptx

1、3.4 标准表函数,在SML中,表操作函数适用于元素类型任意的表。SML中用字母前加一个单引号来表示一种不确定的类型,例如a,b,c,这样一个任意类型的表的类型就可以表示为a list。SML提供了以下三种运算:,-1-,3.4 标准表函数,-2-,以上三种运算符是“多态的”,因为它们可以作用在任意类型的表上。,3.5 字符、字符串和表,SML没有提供专门的字符类型,字符可以表示为长度为1的字符串。标准函数ord:将单字符串(长度为1的字符串)转换为该字符对应的ASCII码标准函数chr:将ASCII码转换为相应的单字符串标准函数explode:将字符串拆成单字符串组成的表标准函数implod

2、e:将字符串表合并为一个字符串,-3-,3.5 字符、字符串和表,-4-,3.6 比较运算符,SML提供了多种重载的中缀比较运算符。“=”、“”用来测试相等和不相等,布尔型、整型、字符串类型、表和元组型对象适用;小于()小于等于(=)只适用于数字和字符串(以字母表顺序决定)如:-“honey”true:bool注:返回值是布尔型,参数类型必须一致。,3.7 元组、记录运算符,SML提供用于访问元组和记录中元素的函数:用“#”访问元组和记录中的元素对于元组,用#加上要访问数据的序号,从1开始;对于记录,用#加上要访问数据的名字。例子:,-#2(1,2,3,4,5,6);2:int-#3(“张”,

3、“王”,“李”,“赵”);“李”:string,-#First_name(First_name=“Bred”,Last_name=“Pett”);“Bred”:string,4.ML函数定义,SML语言程序是通过函数作用来解决问题的。函数是SML的核心。4.1 函数的形式4.2 约束变量和类型4.3 全局定义4.4 条件表达式4.5 递归和函数定义4.6 访问元组约束变量中的元素4.7 模式匹配4.8 局部定义,-7-,4.1 函数,在SML 语言中,函数的形式如下:fn=约束变量(bound variable)自变量,必须是一个 字母-数字 标识符(以字母打头,由字母、数字和下划线组成的字符

4、串)例子:oxymoron,Home_on_the_range,Highway61,-8-,4.1 函数,下面定义的函数将约束变量的值加1作为他的返回值。-fn x=x+1;fn:int-int再看一例:-fn(x,y)=not(x orelse y);fn:(bool*bool)-boolSML自动推导函数定义域和值域类型的过程,-9-,4.2约束变量的类型,设想一个平方函数:fn x=x*x;SML会拒绝该函数定义why?如何解决?约束变量类型可以通过在其后直接写明类型的方法来加以明确。其写法如下:例子:-fn(x:int)=x*x;fn:int-int,-10-,4.2约束变量的类型,平

5、方和函数定义为:-fn(x:int,y:int)=x*x+y*y;fn:(int*int)-int显示地说明约束变量的类型是一种好习惯,这样可以增加函数的可读性并使类型保持一致。在SML中,类型表达式容易变得很长,以至于无法控制。因此,SML提供了定义新的复杂类型的方法,我们将在后面介绍。,-11-,4.3 全局定义,全局定义可以这样建立:val=例如:-val sq=fn(x:int)=x*x;val sq=fn:int-int-val sum_sq=fn(x:int,y:int)=x*x+y*y;val sum_sq=fn:(int*int)-int注意,作为对定义的承认,SML系统会显示

6、定义的名称和表达式的值及类型。定义的名称可用于以后的表达式,例如:,-12-,4.3 变量定义,-sq 3;9:int和以后的定义式,例如:-val sum_sq=fn(x:int,y:int)=(sq x)+(sq y);val sum_sq=fn:(int*int)-int,-13-,4.4 条件表达式,SML中条件表达式的写法如下:if then else 注意,在ML中不允许使用没有else的if-then形式其中,表达式1的值为布尔值,表达式2、3作为选项表达式必须具有相同的类型。例如,要取两数字之中的大者:-val max=fn(x:int,y:int)=if xy then x

7、else y;val max=fn:(int*int)-int,-14-,4.5 递归和函数定义,定义递归函数时,需在函数名前面加上rec。例如,求整数表长:-val rec length=fn(l:int list)=if l=then 0 else 1+(length(tl l);val length=fn:(int list)-intSML支持一种比较简单的函数定义的书写格式,用fun代替val,fn被省略了,约束变量移到了=左边而=也被省略了。如果是递归定义,则“rec”也被省略了。,-15-,4.5 递归和函数定义,即:fun=与val rec=fn=等价上例可以写成:-fun le

8、ngth(l:int list)=if l=then 0 else 1+(length(tl l);val length=fn:(int list)-int,-16-,4.6 访问元组约束变量中的元素,当约束变量是元组时,函数可以访问元组的元素。例如,从学生信息元组中选择姓名、住址和学号:,-17-,4.6 访问元组约束变量中的元素,为了避免书写那些在函数体内用不着的约束变量,SML提供了匿名变量(_)。它的作用相当于一个任意类型的无名变量。我们可以利用它来重写上面的例子:,-18-,4.6 访问元组约束变量中的元素,为了对嵌套的元组元素进行访问,我们使用了嵌套的约束变量元组。例如,从学生信息

9、中分别选则姓和名:,-19-,4.7 模式匹配,SML的函数定义可以使用约束变量模式。所谓模式就是对表达式的结构的描述。模式可以利用变量、常量及构造子(constructor)。构造子指的是任何类型的常量或数据结构名。我们可以利用模式匹配来重写整数表的表头、表尾函数,-20-,4.7 模式匹配,其中的:是作为表的构造子用于约束变量模式的。该函数在遇到空表作为参数时会崩溃,因为空表不能匹配定义中的模式。在SML中,通常采用case风格的模式匹配函数定义,而不是在函数体内使用条件语句。前一种函数定义方法,称之为子句定义,其形式如下:在此,每一个=定义了一种情况。,-21-,4.7 模式匹配,注意每

10、种情况的定义顺序是重要的。当一个子句定义函数作用到一个参量上的时候,就按定义的次序依次将参数与模式进行匹配,直到有一个模式匹配成功为止。考虑下面的例子,我们构造一个函数,他返回朝鲜半岛国家的首都。该函数采用了常量模式匹配定义:当该函数作用到一个参数上去的时候,这个参数就会与函数定义中的所有常量模式进行匹配,直到与其中一个匹配成功,或者是最终匹配了匿名变量。,-22-,4.8 局部定义,SML用letin来表示局部定义:该语句将返回的值。而在的求值过程中,以的值取代出现在中的。这就是说,是一个局部定义,他的有效范围就在letin语句之中。,-23-,4.8 局部定义,对于函数局部定义:其中定义的函数在中可以使用。例如,下面的组合函数C(I,N)=N!/(I!*(N-I)!)的定义中就用到了局部变量的阶乘函数。,-24-,5.SML类型,在SML中,类型表达式容易变得很长,以至于无法控制因此SML提供了定义新的复杂类型的方法。在本节我们将讨论SML的类型系统。5.1 类型表达式和类型缩写5.2 类型变量和多态性5.3 定义新类型,-25-,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1