我在德国大学的编程和学习标准ML方面非常陌生。 我的问题是:
什么是抽象,我为什么要使用它?而且:为什么我可以通过使用" val it = ..."来打电话给他们?
例如:
fn (x:int) => x*x:
it 6;
val it = 36;
另一个例子:
(fn (x:int)=>x*x) 7
val it = 49;
为什么这样工作?我的导师无法给我一个准确的答案,所以我认为你们可以借给我你的知识。
非常感谢您的期待!
答案 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程序较小部分的抽象示例。