2012-03-06 13 views
1

私は関数fとストリームsを持っています。この関数をストリームにどのように適用できますか。 List.mapの仕組みと同じです。関数をストリームに適用する

これは、任意のタイプの無限ストリームです:

type 'a stream = Cons of 'a * (unit -> 'a stream) 

私はこのが出ている、確かに間違っていますが、少なくともそれは私が

type 'a stream = Cons of 'a * (unit -> 'a stream) 

let rec map f (cons(x,xsf)) = f x then map f (xsf) 
+0

ストリームはどのように見えますか?小さなコード断片は多くの助けになります。 – pad

+0

質問を更新しました。 –

答えて

4

何かをしようとしています何reperesentsこのように動作する必要があります:

module Stream = 
    let rec map f (Cons(x,xs)) = 
     Cons(f x,fun() -> xs() |> map f) 

これは、Streamモジュールを定義しています(Listモジュールに類似した)ストリームを処理するための便利な機能を保持することができ、その中にただ一つのmap機能があります。マップ関数は、f関数とxという関数を使用して作成されたストリームを関数xsに渡し、ストリームをfにマップして、f xの新しいストリームを返し、をxsの呼び出しでマップすることによって末尾を取得します。

+0

あなたはその上でellaborateteできますか?私はf#noob =) –

+0

@ JudithMorales - 私は説明を追加しました。あなたが他の疑問を抱えていれば教えてください。 – kvb

+0

説明をいただきありがとうございます。 –

関連する問題