还有更原始的,功能更强大的Haskell Web框架吗?

时间:2011-01-04 20:25:13

标签: haskell web-frameworks

我查看了像Snap和Yesod这样的Haskell Web框架。大多数似乎都实现了一种MVC-ish方法,提醒我像Ruby on Rails这样的Web框架。是的,MVC可以通过FP实现,但恕我直言,它并没有显示FP方法的巨大优势。由于HTTP是无状态协议,我希望可能有一个Haskell框架采用更原始,更纯粹的功能方法。有没有?

4 个答案:

答案 0 :(得分:9)

我不确定您希望框架中使用哪些FP功能,但我认为Yesod使用了一些功能以获得极大的好处。 (哈普斯塔克也是如此,但我对它并不熟悉。)

  • 类型安全的网址消除了一大堆错字生成的错误,并自动处理输入验证。

  • 正确的打字几乎可以消除XSS攻击。

  • 根据您正在处理的数据范围,使用STM或MVar满足您的存储需求,可以轻松避免竞争条件和多线程应用程序中的死锁。

我确信我还没有考虑更多,但我希望这能说明问题。但也许你正在寻找的东西就像一个基于延续的框架。我个人认为他们是一个坏主意(我是REST的信徒),但我认为它似乎更“实用”。

答案 1 :(得分:2)

这取决于你想要实现的目标。如果无国籍你实际上意味着无状态,我使用模板框架Hakyll来生成静态页面。它有一个有趣的结构来处理依赖项和文件更新。

答案 2 :(得分:2)

我认为WardB不是在讨论花哨的类型,而是在谈论FP的外延/无状态语义,而不是像IO和STM这样的命令式/非代数性(通常是非确定性的)语义。 这是指示性方面,支持精确和易于推理。 “功能性”这个术语已被拉伸,以包含命令性/非语义性编程,这常常导致混淆。 Peter Landin recommended将“功能性”替换为“外延性”,以帮助清除这种混淆。

我不知道任何外延(非执行)Haskell Web框架。 到达那里可能需要打破一些长期存在的迫切心理习惯。 这就是说:有趣的工作!

答案 3 :(得分:1)

我一直在寻找相同但却没有找到它。具体来说,我一直在寻找一种不再需要传统HTTP会话的延续方法。这些类型的框架在Scheme中非常流行。我找到的最接近的是Chris Eidhof对Arc挑战的回答: -

https://gist.github.com/260052

这是一个粗略的原型,可能距离你可以用于认真工作的东西还有很多人工月。如果我的Haskell技能更好,我可能会尝试开发它。

我也相信WASH也采用了这种方法但似乎已经死了。我将我的希望寄托在mysnapsession上,因为我相信这也是一个基于延续的会话设施,这将是令人兴奋的因为我对其余Snap的质量及其背后的动力印象非常深刻。