相关疑难解决方法(0)

类型同义词的类限制?

我想做类似的事情:(在伪代码中;这不会编译)

type Num a => Vector2d = (a,a)
Run Code Online (Sandbox Code Playgroud)

或者可能

type Num a => Vector2d a = (a,a)
Run Code Online (Sandbox Code Playgroud)

但我不能这样做.

阅读后,我有一种感觉,要实现这一点,我需要RankNTypes扩展名或forall关键字,但我无法围绕这个...

有人可以帮忙吗?

编辑:我管理,而是"猜测语法":解决方案是,确实RankNTypes:

type Vec =  forall a. Num a => (a,a)
Run Code Online (Sandbox Code Playgroud)

这有效,但RankNTypes扩展

type Vec = Num a => (a,a)
Run Code Online (Sandbox Code Playgroud)

同样有效.有什么区别,Num a =>看起来很自然的约束如何与n级类型相关?

所以问题仍然存在,但我正在寻找解释,而不是解决方案.

haskell

3
推荐指数
1
解决办法
155
查看次数

标签 统计

haskell ×1