- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
似乎弗雷格关于类型类的想法与 Haskell 有很大不同。尤其:
native
,尽管尚不完全清楚这是什么意思。 type.method
访问方法。同样,没有说明这意味着什么或为什么有用。 Eq
,这并不意味着它实现了
Ord
,这意味着它可以实现
Ord
如果它愿意的话。我不确定一个更好的符号会是什么...... )
Foo
是
Bar
的父类(super class).假设每个类有三个方法(
foo1
、
foo2
、
foo3
、
bar1
、
bar2
、
bar3
)和
Bar
为
foo1
提供默认实现.这应该意味着
native
在类声明中,只设置该方法的默认实现? foo
映射到
object.foo()
在 Java 中?
native
,如果我选择,我仍然可以为它提供一些其他实现吗?
最佳答案
您似乎已经非常仔细地阅读了语言规范。伟大的。但是,不,类型类/实例与 Haskell 2010 没有本质区别。只是一点点,那一点是符号。
你的观点:
广告 1. 是的。规则是约束(如果有的话)附加到类型上,类名跟在关键字后面。但是当多参数类型类被添加到语言中时,这将很快改变,有利于 Haskell 语法。
ad 2. 同时全面支持函数类型。这将包含在下一个版本中。不过,当前版本仅支持 (a->b)。
广告 3. 是的。考虑我们的分类类层次结构 Functor -> Applicative -> Monad。您可以只编写以下内容而不是 3 个单独的实例:
instance Monad Foo where
-- implementation of all methods that are due Monad, Applicative, Functor
T.f x
当弗雷格无法推断
x
的类型时.
foo x = x.a + x.b -- this doesn't work, type of x is unknown
-- remedy 1: provide a type signature
foo :: Record -> Int -- Record being some data type
-- remedy 2: access the field getter functions directly
foo x = Record.a x + Record.b x
instance Foo FB
那么无论其他实例和子类如何,这都必须成立。仅当不存在 Foo 实例时,才会使用 Bar 中的默认 foo1 方法。
then that just means that if I write an empty instance declaration for some Java native class, then foo maps to object.foo() in Java?
In particular, if a class method is declared as native, I can still provide some other implementation for it if I choose to?
native [pure] foo "javaspec" :: a -> b -> c
foo
类型 a -> b -> c 恰好使用 javaspec 进行实现。 (具体应该如何在语言引用的第 6 章中描述。还没有完成。对不起。)
native pure int2long "(long)" :: Int -> Long
... int2long val ...
((long)(unbox(val))
map int2long [1,2,4]
native
是将 Java 方法、运算符等提升到 Frege 领域的方法。实际上,在 Haskell 中称为“primOp”的所有内容都只是 Frege 中的 native 函数。例如,
pure native + :: Int -> Int -> Int
Every type [constructor] is a namespace. I get how that would be helpful for the infamous named fields problem. I'm not sure why you'd want to declare other things in the scope of this namespace...
关于class - 弗雷格类(class)如何运作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10530740/
我是一名优秀的程序员,十分优秀!