1

我一直在尝试函数式编程,但我仍然不理解这个概念。你们知道任何讨论这个概念的好书、教程或例子吗?或者,如果您可以展示有关其用法的小片段,那就太好了。

4

4 回答 4

4

学习lisp或scheme。语言就是数据结构就是语言。Lisp 代码和 Lisp 数据结构具有相同的语法规则。

如果您学习 tcl,则可以使用一种程序化语言,并且数据结构语法规则与编程语言语法规则相同。

严格来说,这不是函数式编程问题。对于一些数据的语法规则和语言的语法规则相同的语言来说,这更是一个问题。

于 2009-05-05T18:25:09.003 回答
2

我相信John Hughes的Why Functional Programming Matters是最好的之一。

于 2009-05-05T20:28:17.177 回答
1

维基百科:http://en.wikipedia.org/wiki/Homoiconic

C2 维基:http://c2.com/cgi/wiki?HomoiconicLanguages

于 2009-05-05T20:44:45.063 回答
1

REBOL是一种谐音语言。REBOL 中的block!数据类型是一组方括号,其中包含任何有效的 REBOL 标记,类似于 Lisp 中的 S 表达式。例如:

series: [1 2 3 4]
foreach item series [
    print item
]

现在,让我们用不同的方式表达:

series: [1 2 3 4]
for-body: [print item] ; This is the body of our foreach
foreach item series for-body

尽管它被声明为数据,for-body但当我们将块传递给foreach函数时,我们将其视为代码。如果我们问 REBOL 块中第一项的类型是什么for-body——type? first for-body它会告诉我们word!而不是function!(或native!action!或任何其他 REBOL 函数类型)。原因是,作为数据,for-body它只是一个未评估的 REBOL 词块。当我们将它传递给foreachthen 时,它才会被评估为代码。

有些人称REBOL“像Lisp,但没有括号”,我个人更喜欢它而不是Lisp,但你可能不喜欢。尽管如此,当你想学习同音性时,它仍然是一门很棒的语言,我觉得这个主题很吸引人。

于 2011-03-08T01:34:40.023 回答