2009-05-05 6 views
1

私は関数型プログラミングを実験していますが、私はまだその概念を理解していません。あなたは、この概念を議論する良い本やチュートリアルや例を知っていますか?または、その使用法について小さなスニペットを表示できれば、それは素晴らしいことです。Homoiconicityについての詳しい情報はどこで入手できますか?

+0

機能プログラミングとホモポリマー性は、すべて互いに関連しているわけではありません。ほとんどの関数型言語はhomoiconicではなく、Common Lispのような特別な機能を持たないhomoiconic言語があります。実際、私が心配している限り、心に浮かぶ唯一の機能的なホモ型言語はClojureです。 –

+2

Schemeは機能的言語とホモ言語の両方の言語です。 –

答えて

4

lispまたはスキームを学んでください。言語はデータ構造であり、言語です。 LispコードとLispデータ構造は同じ構文規則を持っています。

tclを学ぶ場合は、手続き型の言語であるで作業できます。データ構造の構文ルールはプログラミング言語の構文ルールと同じです。

厳密に言えば、機能プログラミングの問題ではありません。それは、データの構文規則と言語の構文規則が同じであるいくつかの言語の問題です。

1

REBOLはhomoiconic言語です。 REBOLのblock!データ型は、LispのS式に似た有効なREBOLトークンが含まれる角括弧のセットです。例えば:少し違ったことを

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 

は、それがデータとして宣言されたが、我々はforeach関数に渡されたとき、私たちはコードとしてブロックfor-bodyを治療しました。ブロックfor-bodyの最初のアイテムのタイプが-type? first for-bodyであることをREBOLに尋ねると、であり、function!(またはnative!またはaction!または他のREBOL関数タイプのいずれも)ではありません。その理由は、データとして、for-bodyはちょうどREBOL単語の評価されていないチャンクです。 foreachに渡すと、コードとして評価されます。

REBOLを「Lispと似ていますが、かっこはありません」と言いましたが、私は個人的にはLispを好みますが、そうでないかもしれません。それでも、私が魅力的だと思うホモポリマー性について学びたいときは、まずは素晴らしい言葉です。

関連する問題