2016-11-03 5 views
0

ゴール

私は、トランスデューサがに実装されているかを理解しようとしています。私はcompで探していのClojure /トランスデューサ/ COMP - 実装 - 混乱し

混乱

hereを実装します。特に

、ここではこれらの行:

([] (f (g))) 
    ([x] (f (g x))) 
    ([x y] (f (g x y))) 
    ([x y z] (f (g x y z))) 
    ([x y z & args] (f (apply g x y z args))))) 

、どのような私は理解していない - なぜ5例があるのですか?これは次のように書き換えられませんでしたか?

(args (f (apply g args))) 

コードが上記のように書かれた特別な理由はありますか?

+0

@ClojureMostly:1)私は同意する、これらの2つの質問は基本的に同じです。 2)これの標準的な手順は何ですか?私たちはその質問を削除しますか?重複としてマークしますか?または、他の何か? –

+0

削除は問題ありません。 – ClojureMostly

答えて

1

これは(args (f (apply g args)))と書き換えられませんでしたか?

  • はい、これはトランスデューサとは関係ありません。
  • compは、関数 引数がトランスデューサであるかどうかにかかわらず、機能的構成を実行します。
  • compを含む多くのコア機能は、スピードのために単純なケースを特化しています。

@ClojureMostlyのように一般的な質問には、hereと回答しています。