SML中的抽象

时间:2015-11-04 10:53:21

标签: sml abstraction

我在德国大学的编程和学习标准ML方面非常陌生。 我的问题是:

什么是抽象,我为什么要使用它?而且:为什么我可以通过使用" val it = ..."来打电话给他们?

例如:

fn (x:int) => x*x:
it 6;
val it = 36;

另一个例子:

(fn (x:int)=>x*x) 7
val it = 49;

为什么这样工作?我的导师无法给我一个准确的答案,所以我认为你们可以借给我你的知识。

非常感谢您的期待!

1 个答案:

答案 0 :(得分:1)

你问两个问题:

  

什么是抽象,为什么我使用 [他们]

抽象不是标准ML特有的功能。这是一种管理复杂性的技术。请参阅Abstraction in Computer Science上的维基百科文章。面向对象编程中的对象是管理复杂性的一种抽象,但在标准ML中,您将主要使用函数来创建抽象。

即。每当函数执行很多操作时,它就不必看起来很复杂,因为它可以调用较小的函数来单独执行部分计算。每个小部分在其有限的责任范围内都很容易理解。

  

为什么(fn (x:int)=>x*x) 7以这种方式工作?

我不确定你到底指的是什么。无论何时将表达式写入交互式解释器,而不是诸如val x = 42;val f = fn x => x*x;之类的声明,交互式解释器都会假定隐式val it = ...whatever you typed...

在这种情况下,它是一个匿名函数,将其输入应用于整数7。它是否临时命名为it不应该影响结果。这并不是标准ML程序较小部分的抽象示例。