Post

APartSML(1)——背景介绍

APartSML(1)——背景介绍

课程前言:Programming Languages是University of Washington的一门介绍编程语言基本概念的课程,特别强调函数式编程。课程分成三个部分,分别使用ML(A部分)、Racket(B部分)和Ruby(C部分)语言来讲解编程语言。课程核心不是为了学习特定的语言语法,而是提供一个框架,帮助理解如何有效地使用语言构造,以及如何设计正确优雅的程序,这种思路对于任何语言的学习都是非常有用的。 (1)PartA ML:函数式编程基本概念 (2)PartB Racket:动态类型语言 (3)PartC Ruby:动态类型面向对象

1.ML软件安装

1.1 安装背景

在学习Part A之前需要大致安装以下内容:ML是一个编程语言的家族或范式,类似于C 语言家族(C++,C#),包括多个变体或标准化的实现,如 Standard ML (SML)、OCaml 和 F#。SML/NJ是用于实现SML的编译器,可以和Emac配合使用。简单理解,SML类比Python(编程语言),SML/NJ类比CPython(编译器),Emacs类比VS Code + Python 插件(文本编辑器)。

  • ML (Meta Language)

ML 是一种通用的函数式编程语言,诞生于 1970 年代,最初用于证明定理的编程框架中。ML 强调强类型系统和模式匹配,是现代许多函数式编程语言的先驱。ML 家族包括多种语言,比如 SML 和 OCaml。

  • SML (Standard ML)

SML 是 ML 语言的标准化版本,发展于 1980 年代。SML 提供了一个强静态类型系统和模式匹配机制,并以模块系统著称。它的设计以形式化和可验证性为目标,常用于编译器构造、程序语言研究等领域。

  • SML/NJ (Standard ML of New Jersey)

SML/NJ 是 Standard ML 的一个具体实现(编译器)。它由普林斯顿大学开发,是 SML 语言的重要实现之一。SML/NJ 提供了一个强大的编程环境,除了基本的编译器功能,还包括垃圾回收、运行时调试器、和标准库支持。

  • Emacs

Emacs 是一种强大的、可扩展的文本编辑器,由于其高可定制性,Emacs 可以用来支持多种编程语言的开发。通过安装相关插件,Emacs 可以用来编辑、编译和调试 SML 或 SML/NJ 代码。Emacs 常与 SML/NJ 配合使用,以增强编程体验。

1.2 安装过程

1.2.1 安装SML/NJ

(1)下载安装SML/NJ:Standard ML of New Jersey (2)将SML/NJ路径添加到系统环境变量:Installing SML/NJ under macOS MacOS系统下默认路径/usr/local/smlnj/bin,参考Painless installation of SML on OS X,首先打开bash_profile配置文件,允许用户自定义 shell 环境的各种设置。

1
open -t ~/.bash_profile

然后在配置文件里加入

1
export PATH=/usr/local/smlnj/bin:$PATH

重新加载配置文件

1
source ~/.bash_profile

此时在终端输入sml会出现SML/NJ交互界面,代表安装成功

1
sml

sml

1.2.2 安装Emacs

在终端使用SML/NJ不太方便,可以再结合Emacs来编译SML项目 (1)下载安装Emacs:Emacs For Mac OS X

(2)在Emacs中添加SML Mode,运行命令M-x list-packages,回车键会出现包列表,找到sml-mode,点击安装下载,安装成功后回显示Package sml-mode is installed.,退出重启Emacs emac

1.2.3 Emac打开sml文件

(1)Emac创建文件,C-x C-f test.sml,进入SML mode界面,可以在框中编写sml代码 (2)打开编译器界面,C-c C-s return出现SML/NJ编译器

sml/nj

This post is licensed under CC BY 4.0 by the author.