- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对术语感到困惑。
在本次讲座中 38 分钟 http://youtu.be/0u8eTSc5Gmo Giesl 教授提到了“物体评估”一词。这更准确地说是什么意思?
我知道您可以在 Haskell 中评估表达式,但评估对象意味着什么?
对象本身是表达式吗?
Haskell 中的对象是什么? Int 1 是一个对象吗?函数是对象吗?
Haskell 中的表达式是什么?应用于对象的功能?
谢谢阅读
编辑:根据SICP一个数字是一个表达式,所以在这个意义上,一个数据对象(如数字)也是一个表达式,所以它可以被评估。
编辑 2:以下是 Giesl 教授讲义中的相应部分。
在这些讲义中,他说:“评估类型 IO () 的表达式”,所以也许这就是他在视频讲座中说“对象评估”时的意思。
编辑 3:在 59 分钟,Giesl 教授写道,“解释器只能评估 IO () 类型的对象”。
到了这一步,我才真正开始觉得,他说物就是表达。我对吗 ?所以 object 不是一个值(正如对这个问题的一些评论所建议的那样),而是一个表达式(在他的讲座中)。这是一个正确的解释吗?请比我更了解 Haskell 的人确认我的怀疑是否正确。
编辑4:整个讲座系列可以找到here .
编辑 5:在 his 9th lecture 的开头他使用术语对象,他指的是什么?我不认为他指的是值(value)观或表达方式。他是指代数数据类型意义上的数据对象吗?
我现在完全糊涂了。 基本问题是,吉塞尔教授所说的“物体”是什么意思?他是什么意思? 尤其是在 his 9th lecture演讲。
编辑6:
来自与 Giesl 教授的私有(private)电子邮件通信:
I used the words "object" and "value" as a synonym for "expression".
So when I speak about "evaluation of objects",
in fact I mean "evaluation of expressions".
最佳答案
Haskell language report 中的术语“对象”
在语言报告中,对象通常是值(value)的同义词:
§34.1.4 Marshalling lists of storable objects
withMany :: (a -> (b -> res) -> res) -> [a] -> ([b] -> res) -> res
Replicates a
withXXX
combinator over a list of objects, yielding a list of marshalled objects
[a]
作为
a
类型对象的集合.
[4, 8, 42, 16, 23, 15]
§3.15.1 Field Selection
Field labels are used as selector functions. When used as a variable, a field label serves as a function that extracts the field from an object.
data Sample = Sample { a :: Int, b :: Double }
a :: Sample -> Int
b :: Sample -> Double
§4.2.1 Algebraic Datatype Declarations
A data constructor of arity k creates an object with k components. These components are normally accessed positionally as arguments to the constructor in expressions or patterns. For large datatypes it is useful to assign field labels to the components of a data object.
Just "ok"
Nothing
[1, 3, 4]
§6.3.2 The Ord Class
The Ordering datatype allows a single comparison to determine the precise ordering of two objects.
Ordering
这是用于在两个值之间进行比较时表示“小于”、“大于”和“等于”的数据类型。
The evaluation of an object of type
IO ()
has the effect that this action is performed.
IO ()
value 是有效需要的,计算
IO ()
的 Action 的主体值被执行。
main
需要
IO ()
数据类型:
main = putStr "sample"
main
将被调用来运行程序,
"sample"
将应用于函数
putStr
(类型为
String -> IO ()
)以生成
IO ()
值,有效打印
sample
作为副作用。
§41.1 The IO monad
A value of type IO a is a computation which, when performed, does some I/O before returning a value of type a.
There is really only one way to ”perform” an I/O action: bind it to Main.main in your program. When your program is run, the I/O will be performed. It isn’t possible to perform I/O from an arbitrary function, unless that function is itself in the IO monad and called at some point, directly or indirectly, from Main.main.
...
return
takes a value and gives you back the object where the value is incapsulated.
return
的类型是:
return :: a -> IO a
IO a
的值的函数。包含该值。这是他将对象用作值(value)的同义词的另一种情况。
At this point, I really start to have the feeling that when he says objects he means expression. Am I right?
if x then 0 else 42
0
和
42
既是值又是表达式。
关于Haskell 术语澄清 : "Evaluating Objects" (as used in Prof. Giesl 的 Haskell 讲座系列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24035528/
我听过 WWDC2014 上关于如何使用 Metal API 的讲座,他们正在用一个简单的三角形创建“Hello world”应用程序。我期待在绿色背景上看到一个红色三角形。一切都很好,但三角形本身不
有来自 MIT python 编程类(class)第 8 课的代码。 def(x): assert type(x) == int and x >= 0 answer = 0 s
我的问题是关于奥德斯基的第 3.5 课(不是作业!): 19:15的练习问:“什么是:if (true) 1 else false的类型” 在他的解释中,奥德斯基认为类型是 AnyVal因为它是Int
我是一名优秀的程序员,十分优秀!