摘要定义 ¶
剧情简介 ¶
可以使用block关键字将声明标记为抽象 摘要 . 在抽象块之外,抽象定义不会减少,它们被视为假设, 特别地: 抽象函数永远不会匹配,因此,不会减少。 抽象数据类型不公开其构造函数。 抽象记录类型不公开其字段或构造函数。 其他声明不能是抽象的。
在抽象块内部,抽象定义减少,而类型检查定义, 但在检查其类型签名时没有。 否则,由于依赖类型,可能会泄漏实现 细节(例如,通过使用命题暴露约简行为 平等)。 内部 私有的 在中键入签名 摘要 块,抽象 定义确实减少了。 然而,这也存在一些问题。 请参见 问题 #418 . - The reach of the
摘要 关键字块递归扩展到 这个 哪里 -函数的块和内部的声明 记录 声明,但不在 抽象块。
示例 ¶
模块 整数 哪里
摘要 ℤ = 自然×自然 0 ℤ : ℤ 0 ℤ = 0 , 0
1 ℤ : ℤ 1 ℤ = 1 , 0
_+ ℤ_ : ( x年 : ℤ ) → ℤ ( p、n ) + ℤ ( p',n' ) = ( p+p' ) , ( n+n’ )
- ℤ_ : ℤ → ℤ - ℤ ( p、n ) = ( n,p )
_≡ ℤ_ : ( x年 : ℤ ) → 设置
( p、n ) ≡ ℤ ( p',n' ) = ( p+n’ ) ≡ ( p'+n型 )
私有的
假设
+通信 : ∀ n米 → ( n+m ) ≡ ( 百万+百万 )
发票 ℤ : ∀ x个 → ( x个+ ℤ ( - ℤ x个 )) ≡ ℤ 0 ℤ 发票 ℤ ( p、n ) 重写 +通信 ( 电话+电话 ) 0 | +通信 = 回流
--关于零整数表示的一个属性:
摘要
私有的
0字形 ℤ : ∀ ( x个 : ℤ ) ( 是0 ℤ : x≡ ℤ 0 ℤ ) → 项目 ₁ x≡项目 ₂ x个 0字形 ℤ ( p、n ) 回流 重写 +通信 0 = 回流
抽象的范围 ¶
模块 M1级 哪里
摘要 x个 = 0
模块 平方米 哪里
摘要
x-is-0型 : x≡ 0 x-is-0型 = 回流
The reach of the
模块 起源 哪里
摘要
模块 儿童 哪里 年 = 0 x个 = 0 --避免“无用的抽象”错误
y为0 : 儿童.y≡ 0 y为0 = 回流
带有where块的抽象定义 ¶
模块 在哪里? 哪里
摘要
x个 : 国家 x个 = 0
年 : 国家 年 = x个 哪里
x≡y : x≡ 0 x≡y = 回流
模块 WherePrivate公司 哪里
摘要
x个 : 国家 x个 = 项目 ₁ t吨 哪里 T型 = 自然×自然 t吨 : T型 t吨 = 0 , 1
第页 : 项目 ₁ t≡ 0 第页 = 回流