我在哪里可以获得有关Homoiconicity的更多信息?

时间:2009-05-05 18:19:30

标签: functional-programming homoiconicity

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

4 个答案:

答案 0 :(得分:4)

了解lisp或方案。语言是数据结构是语言。 Lisp代码和Lisp数据结构具有相同的语法规则。

如果你学习tcl,你可以使用程序的语言,数据结构语法规则与编程语言语法规则相同。

严格来说,这不是一个功能性编程问题。对于数据的语法规则和语言的语法规则是相同的,使用几种语言的问题更多。

答案 1 :(得分:2)

我认为Why Functional Programming Matters John Hughes是最好的之一。

答案 2 :(得分:1)

答案 3 :(得分: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单词块。当我们将其传递给foreach时,它会被评估为代码。

有些人称REBOL“像Lisp但没有括号”,我个人更喜欢Lisp,但你可能不会。不过,当你想要了解同性恋时,这是一个很好的语言,这是一个我觉得很有吸引力的主题。