Haskell 如何正确地在方尖碑中进行嵌套布线?
然而,大多数示例都执行Haskell 如何正确地在方尖碑中进行嵌套布线?,haskell,haskell-snap-framework,reflex,Haskell,Haskell Snap Framework,Reflex,然而,大多数示例都执行路由方法->路径段“firstpath”$unitEncoder mempty,而不是单个嵌套路由 有一些示例使用Cat.id将整个URI作为文本传递,例如: backendRouteEncoder=mkFullRouteEncoder (完整路由\后端后端路由\缺少:/()) (\case) BackendRoute_API->PathSegment“API”$Cat.id BackendRoute_Missing->PathSegment“Missing”$unitEn
路由方法->路径段“firstpath”$unitEncoder mempty
,而不是单个嵌套路由
有一些示例使用Cat.id
将整个URI作为文本传递,例如:
backendRouteEncoder=mkFullRouteEncoder
(完整路由\后端后端路由\缺少:/())
(\case)
BackendRoute_API->PathSegment“API”$Cat.id
BackendRoute_Missing->PathSegment“Missing”$unitEncoder mempty
)
然后在后端解析整个路由:
服务器sql(后端路由API:=>Identity=dir“API”$
路由[(“拼写列表/”,runReaderT spellListHandler sql)
,(“featlist/”,runReaderT featListHandler sql)
]
然而,这感觉很奇怪,因为我本以为所有路由都是在Common.Route
中定义的,使用方尖塔.Route
按照ob init
的框架和其他专门定义路由的示例。我希望通过数据类型编码路由对lambdase进行穷尽性检查的安全性,并且不必在所有可能的后端/前端子例程上添加BackendRoute_Missing等效项
data FrontendRoute :: * -> * where
FrontendRoute_Sub :: FrontendRoute (R SubRoute)
data SubRoute :: * -> * where
SubRoute_Foo :: SubRoute ()
然后将unitEncoder
替换为pathComponentEncoder$\case…
另一个例子见