1
3
我希望你能得到一些好的答案。 我还没读过你链接到的报纸,但听起来很有趣。你有没有看过haskell中的ad hoc多态性(基本上是重载)是如何工作的?哈斯克尔的类型系统是H-M加上其他一些好东西。其中一个优点是类型类。类型类提供重载,或者如haskeller所说的,即席多态性。 在使用最广泛的haskell编译器ghc中,类型类是通过在运行时传递字典来实现的。字典允许运行时系统从类型到实现进行查找。据称, jhc 可以在编译时使用超级优化来选择正确的实现,但我怀疑它是否能够处理haskell允许的完全多态的情况,而且我知道没有任何正式的证据或文件来断言正确性。 听起来您的类型推断将遇到与其他rank-n多态方法相同的问题。你很可能想在这里阅读一些论文以了解更多背景: Scroll down to "Papers about types" 他的论文是哈斯克尔的具体,但类型理论的东西应该是有意义和有用的你。 我认为这篇关于rank-n多态性和类型检查问题的文章应该会给你带来一些有趣的想法: http://research.microsoft.com/~simonpj/papers/higher-rank/ 我希望我能提供一个更好的答案!祝你好运。 |
2
1
我的经验是,从直觉上看,给每个词加糖似乎都没有吸引力,但值得追求。 对持久性存储的兴趣使我走了一条迂回的道路来考虑表达式和原子值混合的问题。为了支持这一点,我决定在类型系统中将它们完全分离;因此int、char等只是整数和字符值的类型构造函数。表达式类型由多态类型构造函数exp形成;例如exp int指的是一个值,该值在一个步骤中减少为int。 当我们考虑评估时,这与你的问题有关。在底层,有些原语需要原子值:cond、addint等。有些人将此称为强制表达式,我更愿意将其简单地看作是不同类型值之间的转换。 现在的挑战是,看看这是否可以在不需要显式归约指令的情况下完成。一种解决方案正是您所建议的:即将强制作为一种重载的形式来对待。
假设我们有一个输入脚本:
然后,在加糖之后,这变成:
其中,非正式地:
因此 胁迫 是身份或应用程序 铸造 哪里 乙 是给定上下文的返回类型。 铸造 现在可以被视为类型类方法,例如。
这个
其意图是
|
3
0
你能再澄清一下你到底在问什么吗? 我有一个小小的想法,如果我的想法是对的,那么这个答案就足够作为我的答案了。我相信你是从一个正在创造一种语言的人的角度来谈论这个问题的,在这种情况下,你可以以actionscript 3这样的语言为例。在as3中,您可以用两种不同的方式进行打字:1) 新类型(对象) ,或2) 对象为新类型 . 从实现的角度来看,我认为每个类都应该定义自己转换为任何类型的方法 可以 转换为(数组不能真正转换为整数…还是可以?)。例如,如果您尝试 整数(MyArrayObject) ,并且myArrayObject没有定义转换为和整数的方法,您可以抛出异常或让它成为异常,然后简单地传入原始对象,未经粘贴。 不过,我的整个回答可能完全没有意义:如果这不是你要找的,请告诉我。 |
George S. · 是否存在基于元组的控制流语句内部表示? 6 年前 |
FlatAssembler · 在x86程序集中计算exp(x) 6 年前 |
cib · 即时编译和动态编译有什么区别? 6 年前 |
Artemis · 寄存器与指令之间的差异 6 年前 |
Sam · 了解go工具编译和链接命令 6 年前 |