问题标签 [hlist]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
444 浏览

scala - 将 HList 中的验证应用于案例类

在尝试使用应用程序函子进行验证(Monad 捕获多个异常(不仅仅是单个失败))时,我在 scalaz 中遇到了一个硬限制,它不允许超过 14 个函子,所以这里有一个有用的评论(https://github .com/scalaz/scalaz/issues/504#issuecomment-23626237)引导我使用 HLists 而不是应用函子

现在它工作得非常好(由于它不在 maven https://github.com/typelevel/shapeless-contrib/blob/master/scalaz/main/scala/sequence.scala中,因此必须从这里手动放入这个序列文件之后?来源=c )

我的问题是,我知道这是可能的,你将如何自动实例化case class Foo(i:Int,s:String)而不需要手动将模式与案例匹配,只是再次重新应用参数

本质上我想做这样的事情

0 投票
1 回答
956 浏览

list - Scala 函数中的异构参数

我怎样才能通过一些HList作为论点?所以我可以这样制作:

但是,如果我有一个很长的列表,而我对此一无所知,我该如何对其进行一些操作呢?我怎样才能传递参数而不丢失它的类型?

0 投票
2 回答
996 浏览

scala - 压缩 HLists 的推断函数类型

感谢https://github.com/milessabin/shapeless/wiki/Feature-overview:-shapeless-2.0.0我了解如何压缩无形 HLists:

从 Shapeless 2.0.0-M1 导入一些东西:

创建两个 HList:

压缩它们:

现在尝试定义一个做同样事情的函数:

推断的返回类型是 Unit,实际上将 f 应用于 h1 和 h2 就是这样做的:

有没有办法定义 f 以便在这种情况下得到 ((5,6),(a,b)) ?

最终,我要做的是定义一个函数,它压缩两个 HList,然后映射它们,选择 _1 或 _2 基于抛硬币,这将产生另一个 HL。

在 REPL 中运行良好:

但是当我试图把它拉到一个函数中时,我被上述问题绊倒了。

谢谢!

0 投票
2 回答
4275 浏览

scala - 如何使用新的 Slick 2.0 HList 来克服 22 列限制?

我目前正在编写 Slick 代码以针对具有两个表 > 22 列的旧模式。如何使用新的 HList 代码?在 Scala 2.10.3 下,我的 2.0-M3 在其他方面工作正常。这是我目前在案例类/元组中使用的语法。我会怎么做才能使用文档中提到的新 HLists?

我在示例中看不到任何内容,仅在新更新的文档中简要提及。我是 Scala 和 Slick 的新手。

0 投票
1 回答
201 浏览

scala - 在 poly 函数中键入擦除,scala

所以我想在 a 上创建一个 map 函数HList,但我需要检查应用函数中的一些条件。喜欢:

结果,我们丢失了有关元素的所有type信息t.head;顺便说一句,如果我们构建“干净”功能:

那么,显然,一切都好。

所以问题是:如何处理它,并制作这样的功能(如果可能的话)或者我应该寻找另一种方式?为什么这里可以进行类型擦除?

0 投票
2 回答
431 浏览

scala - scala - HList 的通用解压缩

我有以下斯卡拉问题:

编写一个函数来获取 HLists 的列表

并返回 HList of Lists

这有点像通用的 unzipN。任意HList是否有可能?

谢谢你。

0 投票
1 回答
594 浏览

scala - 对无形 HList 内容的类型推断

这个例子被简化了。

我有一组这样的类:

在以下代码中,类型被正确推断:

我不知道如何正确推断以下类型:

有没有办法可以KeyType根据内容推断HList

0 投票
1 回答
734 浏览

scala - 查找 Shapeless HList 的类型类实例

假设我有一个Show[T]Scalaz 中的特征:https ://github.com/scalaz/scalaz/blob/scalaz-seven/core/src/main/scala/scalaz/Show.scala#L9

我也有一个HList可能看起来像的无形"1" :: 2 :: 3L :: HNil

有没有办法找到Show每个元素的实例并应用shows到我最终得到的结果"1" :: "2" :: "3L" :: HNil

如果任何元素的类型在范围内没有隐式Show实例,我会想要一个编译错误。

我认为如果我构建一个HList实例,Show我应该能够使用它zipApply来获得HList我想要的,但我不知道是否有办法让 Scala 推断HList实例Show而不是我手动构建它.

0 投票
0 回答
154 浏览

scala - 选项签入 HList,Scala

所以,有以下hlists几种选择:

要创建一个包含所有匹配类型对象(它们的 TypeTags)的新列表,可以使用liftA2函数(https://stackoverflow.com/a/14456938/1092399)(注意:有重复的类型和很多HNil对象结果,但这不是问题):

所以现在的目标是跳过所有空Option对象(如果我们能做到这一点,那么就有机会建立一个匹配所有空Option对象的列表);我们需要这样的东西:

上面的函数是错误的,因为发生了类型擦除(在结果中键入 ~ Product with Serializable with shapeless.HList)。所以问题是:有没有办法进行这样的检查,或者它完全不真实?

caseps在这种情况下这是一个非常有趣的类型:Product with Serializable with shapeless.HList

0 投票
1 回答
64 浏览

haskell - 你如何在 HList 中注释类型

我正在尝试使用 HList,我需要对其进行注释,但我不知道该怎么做。

如果如果在 ghci 中键入以下内容

我得到以下类型签名:

HList ((':) * [字符] ('[] *))

我真的不明白。如果尝试使用此签名,我得到一个错误

“你好” 。*。HNil :: HList ((':) * [Char] ('[] *))

我有一个错误

我应该怎么办 ?

(我已经看到使用的东西,:*:所以理论上我可以这样做,String :*: HNil但它找不到:*:.