タグ付けされた質問 「composition」




3
React.js:あるコンポーネントを別のコンポーネントにラップする
多くのテンプレート言語には、「スロット」または「yield」ステートメントがあります。これにより、ある種の制御を逆にして、あるテンプレートを別のテンプレート内にラップすることができます。 Angularには「トランスクルード」オプションがあります。 Railsにはyieldステートメントがあります。React.jsにyieldステートメントがある場合、次のようになります。 var Wrapper = React.createClass({ render: function() { return ( <div className="wrapper"> before <yield/> after </div> ); } }); var Main = React.createClass({ render: function() { return ( <Wrapper><h1>content</h1></Wrapper> ); } }); 望ましい出力: <div class="wrapper"> before <h1>content</h1> after </div> 残念ながら、React.jsにはがありません<yield/>。同じ出力を実現するためにWrapperコンポーネントをどのように定義しますか?



10
Haskellの構成(。)とF#のパイプ転送演算子(|>)
F#では、パイプ転送演算子の使用|>がかなり一般的です。ただし、Haskellでは(.)、関数の構成、が使用されているのを見ただけです。私はそれらが関連していることを理解していますが、パイプフォワードがHaskellで使用されていないという言語上の理由はありますか、それとも何か他のものですか?

7
Java-インターフェース実装でのメソッド名の衝突
2つのインターフェースがあり、どちらも目的がまったく異なりますが、メソッドの署名が同じである場合、両方のインターフェースに役立つ単一のメソッドを記述したり、メソッドに複雑なロジックを記述したりせずに、クラスに両方を実装させるにはどうすればよいですか?呼び出しが行われているオブジェクトのタイプをチェックし、適切なコードを呼び出す実装? C#では、これは明示的なインターフェイス実装と呼ばれるものによって克服されます。Javaに同等の方法はありますか?

5
モナドが合成の下で閉じられていないことを示す具体的な例(証拠付き)?
適用可能なファンクターは構成の下で閉じられますが、モナドは閉じられないことはよく知られています。しかし、モナドが常に構成されているとは限らないことを示す具体的な反例を見つけるのに苦労しています。 この答えは[String -> a]、非モナドの例として示しています。少し遊んだ後は直感的に信じますが、その答えは「結合は実装できない」と言っているだけで、正当な理由はありません。もっとフォーマルなものが欲しいのですが。もちろん、タイプの関数はたくさんあります[String -> [String -> a]] -> [String -> a]。そのような関数は必ずしもモナドの法則を満たさないことを示さなければなりません。 (証拠を伴う)どんな例でもかまいません。特に上記の例の証拠を必ずしも探しているわけではありません。

2
Haskellコードのフラグメントを組み合わせて全体像を把握する
これは私がどこかで見つけたコードですが、これがどのように機能するか知りたいです: findIndices :: (a -> Bool) -> [a] -> [Int] findIndices _ [] = [] findIndices pred xs = map fst (filter (pred . snd) (zip [0..] xs)) 出力:findIndices (== 0) [1,2,0,3,0]==[2,4]、ここpredで(==0)&xsは[1,2,0,3,0] 私の理解の一部を紹介します。 (zip [0..] xs) 上記の行が行うことは、リスト内のすべてにインデックスを付けることです。上記の入力の場合、次のようになります[(0,1),(1,2),(2,0),(3,3),(4,0)]。 (pred . snd) これはのようなものであることがわかりましたpred (snd (x))。私の質問は、xリストはzip行から作成されていますか?私はイエスに傾いていますが、私の推測は薄っぺらです。 次は、私の理解であるfstとsnd。そんなこと知ってる fst(1,2) = 1 そして snd(1,2) = …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.