问题 精心设计的功能网络应用程序的源代码?


什么是精心设计的功能(而不是面向对象)Web应用程序的例子,使他们的源代码可用?我正在研究 黑客新闻  资源 但是我希望看到一些其他非平凡的例子,理想情况是 Clojure的

对于MVC,有很多Rails和PHP应用程序,框架和教程要研究 - 函数式编程有什么用?


12186
2017-08-12 08:04


起源

Arc和clojure几乎不是函数式语言。看看HappS: happs.org - jrockway
也许搜索“基于连续性的Web应用程序”可以为您带来一些有趣的结果。 - fortran
有趣的框架和文章 - 谢谢!你有这些想法的真实实现的链接吗?例如,Haskell中的商店系统,基于延续的CMS还是简单的博客软件?我喜欢从经过验证的解决方案中学习。 - Lorenz


答案:


有:

该列表足以让您忙于提供具有不同特征的函数式语言示例:

  • Clojure:多范式?,灵活吗?它不是一种纯粹的函数式语言,虽然你最好以函数式编程,但并不是绝对必要的。您可以通过Java interop编写java风格的OOP,也可以使用多方法从中抽象出来。那里有很多灵活性,尽管现在说它是否只是普通lisp的“灵活”或“多范式”还为时尚早。部分地设计为易于处理并发的lisp,它实际上射击了很多目标,因此灵活或多范式指定。
  • Scheme:与Clojure相比,它更像是一种纯函数式语言,它比Clojure更强有力地推动了程序员的功能风格。
  • Erlang:为可靠并发而构建的函数式编程。 Erlyweb构建在一个高度并发的平台上。
  • Smalltalk:高度OO函数编程(甚至控制结构是对象系统中的对象,而不是语法结构)。

如果你想看看webapps如何以“不惜一切代价”运行的语言,那么jrockway的建议是值得关注的。


7
2017-08-12 08:16



有关PLT Scheme Web服务器的介绍,请查看 docs.plt-scheme.org/continue 。 - Eli Barzilay
你能解释一下PLT Scheme Webserver和Seaside在这里列出的原因吗?他们的实现是函数式编程的好例子吗? - Vijay Mathew
@Vijay,使用continuation控制webserver和客户端之间的交互。这将是Web编程功能方法的标志。可以在Yahoo!中找到对此的一种描述。基于连续的Web服务器的专利: google.com/... 这项专利来自保罗格雷厄姆撰写雅虎的工作。 Lisp的商店早在90年代中期。有关基于延续的Web服务器的更多信息,请查看fortran对原始问题的评论。 - Pinochle
好吧,据我所知,延续与函数式编程无关。 - Vijay Mathew
en.wikipedia.org/wiki/Continuation Continuations是函数式编程语言可以授予对堆栈的访问权限的方式。它们是goto语句的功能等价物。当然,这一切都取决于你说“功能性”时的意思,并且可以将这个词的含义限制在没有任何“功能性”但是一组非常有限的现象的程度上。无论什么漂浮你的船。但必须认识到,这是一个透视问题,大多数人会将延续视为“功能”语言的特征。 - Pinochle


Weblocks是一个经过验证的面向对象的功能框架,它从Seaside中获取灵感。

它是用Common Lisp编写的,可以在这里找到两个基本的例子(weblocks-demo,simple-blog): http://bitbucket.org/S11001001/weblocks-dev/src/tip/examples/


2
2017-08-13 13:19



但它不起作用,请参阅上面的问题 - Rainer Joswig


如果您正在寻找以纯函数语言实现的真实世界开源项目,此链接可能会有所帮助: http://haskell-news.blogspot.com/2008/01/top-10-most-popular-haskell-programs.html

如果您对Web应用程序非常具体,请查看以下内容: http://www.haskell.org/haskellwiki/RPC


1
2017-08-13 03:45