首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在网络路由中派生PathInfo类?

在网络路由中派生PathInfo类?
EN

Stack Overflow用户
提问于 2012-06-24 15:11:54
回答 1查看 82关注 0票数 1

我正在阅读“幸福堆栈”中的网络路线教程,我不知道这是在做什么:

代码语言:javascript
复制
$(derivePathInfo ''Sitemap)

class PathInfo a where
  toPathSegments :: a -> [String]
  fromPathSegments :: URLParser a

医生简单地说:

我们使用template-haskell为Sitemap类型派生一个PathInfo实例。

但它“存放”在哪里呢?我以为haskell没有状态,PathInfo是我们自己的东西,还是它是粒子堆栈的一部分?

如果有人能为假人解释这件事呢?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-24 16:13:22

它生成为Sitemap类型定义PathInfo类实例的代码。这不是“状态”,而是“类型-全局常量”。例如,toPathSegments (Article (ArticleId 5))将返回类似于["Article", "5"]的内容,这反过来将用于生成类似于"/Article/5"的URL。另一个函数fromPathSegments是反向操作,将"/Article/5"解析回Article (ArticleId 5)

您可以手动编写此实例:

代码语言:javascript
复制
instance PathInfo Sitemap where
    toPathSegments Home = ["Home"]
    toPathSegments (Article (ArticleId x)) = ["Article", show x]
    fromPathSegments = ...

模板Haskell只用于减少对此样板代码的需求。

您可能希望在面向Haskell初学者的“关于类型类的章节”一书中阅读为了伟大的利益,给你一个Haskell吧!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11178572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档