2017-08-22 7 views
0

Ramda's type definitionsからです:'@@ transducer/step'とは何ですか?次

type Transformer<A,B> = { 
    '@@transducer/step': <I,R>(r: A, a: *) => R, 
    '@@transducer/init':() => A, 
    '@@transducer/result': (result: *) => B 
} 

declare function into<I,T,A:Array<T>,R>(accum: Transformer<I,R>, xf: (a: A) => R, input: A): R 

'@@transducer/*'はここで何を意味するのでしょうか?私はドキュメントでこの構文について何も見つけることができません。

答えて

1

これは実際にはフロー自体に固有のものではありません。 Flowの観点から、'@@transducer/*'の各項目は、オブジェクト内のプロパティの名前を示す単なる文字列リテラルです。

このFlow宣言では、Transformerは3つのプロパティを持つオブジェクトで、これらの特定の文字列を名前として持ち、それらの関数タイプの値を示しています。

Ramdaコードからsee an example of a value of that typeに役立つことがあります。特定の機能を指している3つのキーを持つオブジェクトであることがわかります。

+0

偉大な答えをありがとう!これはファンタジーランドスペックのコンプライアンスと関係がありますか? – Pavlo

+1

ファンタジーランド用ではありません。次のような名前をつけたJSへのClojureトランスデューサのトランスデューサ-jsの標準セットのようです:https://github.com/cognitect-labs/transducers-js/blob/6117ae6cb7492916815d078dfa26abc0362f30e1/README.md#transformer-プロトコル – Adam

関連する問題