7得票1回答
在函数内部对HList进行映射

以下代码看起来足够明显,可以编译和运行。 case class Pair(a: String, b: Int) val pairGen = Generic[Pair] object size extends Poly1 { implicit def caseInt = at[Int]...

10得票1回答
我该如何提取这个多态递归函数?

我正在使用 GHC 7.8 进行一些有趣的事情,但遇到了一点问题。我有以下代码:mkResultF :: Eq k => Query kvs ('KV k v) -> k -> ResultF (Reverse kvs) (Maybe v) mkResultF Here ke...

9得票3回答
在生产中使用索引Monad的经验报告?

在之前的问题中,我发现了 Conor McBride 的《厄运的 Kleisli 箭头》,当时我正在寻找一种将Idris示例编码为Haskell的方法。我的努力去理解 McBride 的代码并使其在 Haskell 中编译成功导致了这个 gist:https://gist.github.com...

9得票1回答
数字类型签名

是否可以创建一个带有数值参数的类型? 例如,如果我想要创建一个具有固定位宽的整数类型: newtype FixedWidth w = FixedWidth Integer addFixedWidth :: FixedWidth w -> FixedWidth w -> Fix...

48得票1回答
为什么在类型级计算中需要Aux技术?

我相信我错过了一些东西,因为我对Shapeless还很陌生并且在学习中,但是何时实际上需要使用Aux技术呢?我看到它被用来通过将其提升到另一个“伴随”type定义的签名中来公开一个type语句。 trait F[A] { type R; def value: R } object F { t...

7得票1回答
Rust类型级乘法

我���在尝试在Rust中实现类型级乘法。 加法已经可以工作了,但是我在一个“临时”的类型变量上遇到了问题。 代码如下: use std::marker::PhantomData; //Trait for the type level naturals trait Nat {} imp...

11得票2回答
从模块中导出类型操作符

如何导出类型运算符?考虑到它们可能与普通运算符冲突,如果可能的话必须有一种特殊语法。

10得票1回答
更改函数类型(->)的固定性?

在进行一些类型级计算时,我遇到了这样的问题:我想更改->的固定性,因为它不能与固定性为0的左结合类型运算符混合使用。我知道使用TypeOperators扩展和infixr 1 ->无法直接解决这个问题,因为它只会返回错误parse error on input ‘->’。 ...

42得票1回答
使用“Prolog in Scala”查找可用的类型类实例

考虑到https://speakerdeck.com/folone/theres-a-prolog-in-your-scala,我想要“滥用”Scala类型系统,以找到所有符合给定条件的CanBuildFrom实例。按照Prolog风格,我会评估以下伪代码: can_build_from(S...

8得票3回答
双向功能依赖

我有一个类型类,看起来像以下的代码: class Foo a b | a -> b where f :: a -> Bool g :: b -> Bool h :: a -> b -> Bool 至少这些是我问题所关心的重点。这个类无法编译,原因...