首页 文章

GoF的Lexi Editor应用程序的功能实现(例如在Haskell中)[关闭]

提问于
浏览
2

我试图理解如何使用函数式编程来实现通常使用OO /命令式方法实现的应用程序 .

一个重要的应用程序类别是编辑器(Word,Evernote,PowerPoint,Photoshop等) .

让's consider GoF' s Lexi编辑器应用程序作为代表性和众所周知的示例,其面向对象/命令式解决方案已在GoF书中详细描述 .

如何在Haskell中编写GoF的Lexi应用程序的等价物?

这有可能吗?在OO /命令式与FP /不可变方法中,时间/内存复杂度如何比较?

当在Haskell中实现时,该应用程序(Lexi)的一般架构会是什么?

如何比GoF书中描述的非功能性/面向对象的解决方案更好还是更差?

谢谢阅读 .

编辑/回答:

这本书' The Haskell School of Expression '似乎回答了这个问题 . 它显示了(除其他外)如何在Haskell中开发图形编辑器 .

编辑2:This演示文稿似乎也回答了这个问题(不是直接) .

1 回答

  • 7

    我将解决你的一个客观答案的问题:

    是否可以[在Haskell中编写相当于GoF的Lexi应用程序]?在OO /命令式与FP /不可变方法中,时间/内存复杂度如何比较?

    是的,这是可能的 . 与"OO/imperitive approaches"相比,Haskell中没有固有的时间/内存复杂性约束,如果您承认像ST monad这样简单的事情 . 如果没有ST monad,那就是open problem whether purely functional languages with lazy evaluation can achieve the same time performance as mutable languages . 它们肯定在 log(M) 的时间性能因子中,其中 M 是可变系统中使用的内存量;通过从树中构建可变内存系统可以很容易地看出这一点 .

相关问题