当前位置: 首页 > news >正文

Modules模块NamespaceManagement命名空间管理

大部分程序语言都有组织大型程序的方式。如将代码分开放到不同文件中,对外隐藏内部代码。

SML定义module

structure MyModule = struct bindings end

(* Programming Languages *)
(* Section 4: Namespace Management *)

structure MyMathLib =
struct
fun fact x =
    if x = 0
    then 1
    else x * fact (x -1)

val half_pi = Math.pi / 2.0
fun doubler y = y + y
end

(* 在模块外调用模块内的绑定,需要带上模块名 *)
val pi = MyMathLib.half_pi + MyMathLib.half_pi

val twenty_eight = MyMathLib.doubler 14
				     

有一种方法可以直接访问Module的绑定

open ModuleName

使用该行代码后,后面的代码访问Module内的内容,可以不需要带上模块名。不推荐在实际运行的代码中这么做。

更好的方法是生成一个local绑定,如 val map = List.map. 

Signatures, 在SML里Signature是structure模块的类型,有点类似于定义接口,具有隐藏代码的作用。

signature SIGNAME = 

sig types-for-binding end

structure MyModule :> SIGNAME = 

struct bindings end

相关文章:

  • AI应用企业研发方案
  • 旋转位置编码
  • OpenHarmony-5.0.0-Risc-V架构搭建DeepSeek-R1
  • SS Block
  • Android Coil 3默认P3色域图加载/显示不出来
  • STM32 模块化开发指南 · 第 5 篇 STM32 项目中断处理机制最佳实践:ISR、回调与事件通知
  • Windows 录音格式为什么是 M4A?M4A 怎样转为 MP3 格式
  • 面向对象的需求分析与UML构造块详解
  • 设计模式:里氏代换原则 - 继承设计的稳定之道
  • 搜索插入位置 -- 二分查找
  • 每日一题(小白)暴力娱乐篇29
  • 新能源车「大三电」与「小三电」
  • GitLab之搭建(Building GitLab)
  • 【数据结构】堆排序详细图解
  • Python实现浏览器模拟访问及页面解析的全面指南
  • 智能自动化管理系统
  • 3.0/Q2,Charls最新文章解读
  • 自动化测试常用函数
  • django数据迁移操作受阻
  • 4185 费马小定理求逆元
  • 杭州做企业网站/市场营销手段13种手段
  • 餐饮网站建设怎么建设的/网站seo主要是做什么的
  • 电子商务网站建设与维护期末答案/今日财经新闻
  • 银行做网站视频/南昌seo全网营销
  • web网站百度不收录吗/深圳抖音推广公司
  • 网站竞价开户/网站搭建关键词排名