SML 中的抽象
Abstraction in SML
我目前在德国的大学学习编程和学习标准机器学习方面还很陌生。
我的问题是:
什么是抽象,我为什么要使用它?而且:为什么我可以只使用 "val it=..." 来调用它们?
例如:
fn (x:int) => x*x:
it 6;
val it = 36;
还有一个例子:
(fn (x:int)=>x*x) 7
val it = 49;
为什么会这样?我的导师无法给我一个准确的答案,所以我想你们可以把你的知识借给我。
谢谢大家的期待!
你问了两个问题:
What are abstractions and why am I using [them]?
抽象不是标准 ML 特有的功能。它是一种管理复杂性的技术。请参阅 Abstraction in Computer Science 上的维基百科文章。来自面向对象编程的对象是管理复杂性的一种抽象,但在标准 ML 中,您将主要使用函数来创建抽象。
即每当一个函数做很多事情时,它不必看起来很复杂,因为它可以调用更小的函数来独立执行部分计算。每个小部分在他们有限的责任范围内都很容易理解。
Why is (fn (x:int)=>x*x) 7
working that way?
我不确定你在这里指的是什么。每当您将表达式写入交互式解释器而不是 val x = 42;
或 val f = fn x => x*x;
等声明时,交互式解释器都会假定隐式 val it = ...whatever you typed...
.
在这种情况下,它是一个匿名函数,将其输入平方应用于整数 7。是否临时命名为 it
不应影响结果。这不完全是对标准 ML 程序的较小部分进行抽象的示例。
我目前在德国的大学学习编程和学习标准机器学习方面还很陌生。 我的问题是:
什么是抽象,我为什么要使用它?而且:为什么我可以只使用 "val it=..." 来调用它们?
例如:
fn (x:int) => x*x:
it 6;
val it = 36;
还有一个例子:
(fn (x:int)=>x*x) 7
val it = 49;
为什么会这样?我的导师无法给我一个准确的答案,所以我想你们可以把你的知识借给我。
谢谢大家的期待!
你问了两个问题:
What are abstractions and why am I using [them]?
抽象不是标准 ML 特有的功能。它是一种管理复杂性的技术。请参阅 Abstraction in Computer Science 上的维基百科文章。来自面向对象编程的对象是管理复杂性的一种抽象,但在标准 ML 中,您将主要使用函数来创建抽象。
即每当一个函数做很多事情时,它不必看起来很复杂,因为它可以调用更小的函数来独立执行部分计算。每个小部分在他们有限的责任范围内都很容易理解。
Why is
(fn (x:int)=>x*x) 7
working that way?
我不确定你在这里指的是什么。每当您将表达式写入交互式解释器而不是 val x = 42;
或 val f = fn x => x*x;
等声明时,交互式解释器都会假定隐式 val it = ...whatever you typed...
.
在这种情况下,它是一个匿名函数,将其输入平方应用于整数 7。是否临时命名为 it
不应影响结果。这不完全是对标准 ML 程序的较小部分进行抽象的示例。