是否有 `prism' id Just` 的 `id`?

Is there an `id` of `prism' id Just`?

我有一个函数叫做:

mapRouteEncoder ::
  Prism' FilePath FilePath ->
  Prism' r1 r2 ->
  (b -> a) ->
  RouteEncoder a r1 ->
  RouteEncoder b r2

这个函数通常通过在前两个参数中指定“身份”棱镜(如果我们可以这样称呼它)来使用,因为只指定了第三个函数,即:

    stringRouteEncoder
      & mapRouteEncoder (prism' id Just) (prism' id Just) changeModel

我使用 optics-core,那个库中有什么东西可以代替 prism' id Just 更惯用的东西吗?

我不熟悉那个包的习语,但我很想使用 castOptic equality 将身份 Iso 变成 Prism。这似乎很好地理解了这个想法。但是,我希望在大多数情况下您实际上 不需要 将其转换为 Prism;您大概可以使用接受 IsoPrism.

的多态函数(如 previewreview

在你的情况下,我怀疑正确的方法是写类似

的东西
mapRouteEncoder ::
  ( p1 `Is` A_Prism
  , p2 `Is` A_Prism) =>
  Optic' p1 ixy1 FilePath FilePath ->
  Optic' p2 ixy2 r1 r2 ->
  (b -> a) ->
  RouteEncoder a r1 ->
  RouteEncoder b r2