【发布时间】:2017-06-26 10:56:30
【问题描述】:
我是 Purescript 的新手,我正在尝试编写一个函数 可以获取任何记录值并遍历字段和值并构建 一个查询字符串。
我在想这样的事情:
buildQueryString :: forall a. PropertyTraversible r => r -> String
我想这样使用:
buildQueryString {name: "joe", age: 10} -- returns: "name=joe&age=10"
有没有办法用现有的习语在 Purescript 中编写类似的东西,还是我必须为此创建自己的自定义类型类?
【问题讨论】:
-
不确定如何对任何记录执行此操作。听起来像是严肃的元编程。如果您想对记录周围的新类型执行此操作,您可以使用 purescript-generics、派生 Generic、调用 toSpine 并根据需要转换 GenericSpine。也许这是一个值得探索的想法。另一种可能性是只使用 FFI。
-
@stholzm:发布问题后,我确实使用了 FFI,并设法通过 FFI 实现了这一点。我将研究 purescript-generics 看看它是否也能工作。不过,我更喜欢不使用 FFI 的解决方案。
-
啊,我以为你想让
buildQueryString处理任何记录,没有名义类型。不可能为记录 AFAIK 派生实例,因此这将是乏味的。另外,我不确定 purescript-generics 或 purescript-generics-rep 是否是当今的首选库。我只知道纯脚本泛型是可能的。 -
@stholzm:我确实希望它适用于任何记录,但正如您所说,如果我想使用 purescript-generics 之类的东西,那么可以支持的记录有一些限制。一旦我评估了所有可能性,我就会知道限制是什么以及我是否可以忍受它们:)
-
我今天看了 purescript-generics-rep ,它与我的答案基本相同。但是自定义类型类也不适用于任何记录。所以我认为 FFI 是一种有效的方法。不过,我很想看到另一种解决方案!
标签: purescript