• Programming Language A 学习笔记(一)


     SML(一)

    1. ML是一个函数式编程语言,理论基础为λ演算。

    2. 变量声明

    val x = e;

    标准类型:单元(unit)、布尔(bool)、整型(int)、字符串(string)、实数(real)、元组(tuple)、记录(record)、列表(list)

    1)负数表示:负号用“~”表示,-1表示为“~1”;

    2)字符串:双引号间的字符序列;

    3)实数:其他语言表述为double的浮点数;

    4)list:“[]”表示空list,list 例:[1, 4, 9, 16, 25],list中的数据类型要求一致,可以嵌套;

    5)tuple:圆括号中用逗号分隔的数据元素,可以嵌套,元组数据类型可以不一致,例:(a, 9);

    6)record:记录的值和类型的写法都用{}括起来,例:{first : int, middle : int, last : int};

     

    1

    元组

    列表

    记录

    括号

    ()

    []

    {}

    元素类型

    可以不同

    必须相同

    可以不同

    长度

    定长

    变长

    变长

    类型表达式

    用*连接的<元素类型>表达式

    <元素类型> list

    {记录名: <元素类型>}

    3. 使用程序文件:use "foo.sml";

    4. 函数定义

    SML中函数的类型是由他的定义域和值域共同确定。

    SML

    C语言

    fun division(x : int, y : int) =

        x div y

    int division(int x, int y)

    {

        return x/y;

    }

    5. 元组数据引用

    元组pr : int * bool  => #1 pr元组 第一个元素,int类型;#2 pr 元组第二个元素,bool类型;

    6. 列表数据引用

    hd, 列表表头元素;tl,hd元素以外的列表;

    7. let表达式:let b1 b2 … bn in e end

    b1 b2 … bn 可以为变量声明、函数定义等, e为表达式

    8. 条件表达式:if e1 then e2 else e3

    e1、e2、e3为表达式,e2和e3要求相同的数据类型;

    9. NONE、SOME和valOf

     关键字

     Evaluate

    TYPE

    'a

     

    任意类型

    'a list

     

    任意类型的list;hd类型确定后,list类型固定

    NONE

    NONE is an option value "carrying nothing" whereas

     'a option

    SOME e

    SOME e evaluates e to a value v and becomes the option carrying the one value v.

     t option if e has type t.

    null、isSome

    null to see if a list is empty, we have isSome which evaluates to false if  its argumentis NONE.

     

    valOf

    get the value carried by SOME (raising an exception for NONE)

     

    10. 运算符

    算术加、减、乘、除:+、-、*、div(整型)、/(real类型)

    逻辑运算与、或、非、等、不等、大于、小于、大于等于、小于等于:andalso、orelse、not、=、<>、>、<、>=、<=

    字符串连接:^

    两个列表连接:@

    数据e与列表es连接:e::es

  • 相关阅读:
    Java Web连接各种数据库方式汇总
    java.lang.UnsupportedClassVersionError: Bad version number in .class file 解决办法
    <meta 标签的详细使用
    Redis实战之征服 Redis + Jedis + Spring (一)
    Redis实战之征服 Redis + Jedis + Spring (二)
    Redis实战之征服 Redis + Jedis + Spring (三)
    快速组合数
    HDU4632:Palindrome subsequence(区间DP)
    阿里暂停微信服务:让商家回归微信的本职,做好客户服务
    谈谈无穷小微积分对我国微积分教学改革的影响
  • 原文地址:https://www.cnblogs.com/notTao/p/6166029.html
Copyright © 2020-2023  润新知