关于函数式编程语言的几个问题让我开始思考XSLT是否是函数式编程语言。如果不是,缺少哪些功能?XSLT 2.0是否缩短或缩小了差距?
发布于 2008-09-21 02:29:03
XSLT是声明性的,而不是有状态的。
尽管XSLT基于函数式编程思想,但它不是一种完全的函数式编程语言,它缺乏将函数作为第一类数据类型处理的能力。它有像惰性求值这样的元素来减少不必要的求值,并且也没有显式循环。
就像函数式语言一样,我认为它可以很好地与跨多个处理器的自动安全多线程并行化。
来自Wikipedia on XSLT
作为一种语言,
受到函数式语言和基于文本的模式匹配语言的影响。它最直接的前身是DSSSL,这种语言对SGML执行的功能与XSLT对XML执行的功能相同。XSLT也可以看作是一个模板处理器。
这是一个很好的网站,介绍如何在FXSL的帮助下使用XSLT as a functional language。FXSL是一个实现对高阶函数支持的库。
由于有了FXSL,我认为XSLT本身并不需要具备完整的功能。也许FXSL将来会作为W3C标准被包括在内,但我没有证据表明这一点。
发布于 2009-01-29 18:37:34
我相信你们现在已经找到这个链接了:-) http://fxsl.sourceforge.net/articles/FuncProg/Functional%20Programming.html。
XSLT中的Well函数是一等公民,毕竟需要做一些工作:-)
发布于 2008-10-19 15:12:48
这就是我在编程时的感觉。
XSLT完全基于定义函数并将它们应用于输入流中的选定事件。
XSLT允许设置变量。函数式编程不允许函数有副作用--这是一个很大的问题。
尽管如此,使用XSLT编写时,感觉就像是以FP方式工作,您正在处理输入,而不是更改输入来创建输出。
这是一种与使用DOM时使用的编程模型非常不同的编程模型。DOM根本不分离输入和输出。你得到了一个数据结构--你可以按照你认为合适的方式去破坏它--没有犹豫,没有限制,也没有后悔。
可以说,如果你喜欢FP和它背后的原理,你可能会觉得在它工作很舒服。就像使用事件驱动编程的经验一样--以及XML本身--也会让你觉得很舒服。
如果您唯一的经验是使用自上而下的、非事件驱动的程序,那么XSLT将是非常陌生的、完全陌生的。至少一开始是这样。积累一点经验,当您对XPath表达式和事件处理感到非常满意时,再回到XSLT,您将获得丰厚的回报。
https://stackoverflow.com/questions/110031
复制相似问题