問題タブ [lifting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - モナドの部分リフト?
モナドの部分リフトのようなものはありますか? 型シグネチャを次のようにする必要があります。
これの代わりに:
>=>
およびその他の理由で使用するため。上記を行う標準的な方法を探しています。
scala - リフト関数を直接適用すると、期待される関数が得られない
以下は、小規模なタスクを実行することが期待されているが、異なる方法で定義されている 2 つの部分関数です。
Lift1 と Lift2 の両方の定義が同じ場合に、Lift2 に null を渡すと MatchError が返されるのはなぜですか?
javascript - Ramda.js の「リフト」について頭を悩ませることができません
Ramda.js のソース、特に「lift」関数を見てください。
与えられた例は次のとおりです。
したがって、結果の最初の数字は簡単です。a
、b
、c
、 はすべて各配列の最初の要素です。2つ目は、私には理解できません。引数は各配列の 2 番目の値 (2、2、未定義) ですか、それとも最初の配列の 2 番目の値と 2 番目と 3 番目の配列の最初の値ですか?
ここで起こっていることの順序を無視しても、私にはその価値がわかりません。lift
最初に ingせずにこれを実行すると、配列concat
が文字列として enated されてしまいます。これは一種のように機能しているようflatMap
に見えますが、その背後にあるロジックをたどることができないようです。
haskell - Haskell : データ型を関数に「持ち上げる」
どういうわけか、私はまだ Haskell で表現できるものとできないものについて直感を構築しようとしています。
私は独自の (単純な) 行列タイプを持っていますが、ベクトルに適用される行列の通常の数学表記を理解するために、何らかの方法でそれを関数に "持ち上げる" ことができるかどうか疑問に思っています。
この質問について詳しく説明します。
明らかに、この関数は type の「ベクトル」に対するmv
行列のアクションを実装しています。M m
[a]
(M' m) v
しかし、そのような構文で同じアクションを実装する方法はありますか
次に、次のようなものを書くことができるようにする必要があります
私が定義した行列データ型は、そのようなリフティングを行うには十分ではないと思います。hom([a],[a])
どういうわけか、自己定義の行列型からいくつかの、つまりベクトル空間のカテゴリのモーフィズムのセットへのファンクターを見つけようとしていると思いますVec
が、データ型には必要な構造がありません。
そのような「リフティング」を行うことができない根本的な理由はありますか?
javascript - 持ち上げられた R.divide に関数を渡すことができるのはなぜですか?
以下を考えると:
これが の無意味な実装として機能するのはaverage
なぜですか? R.sum
なぜ渡すことができるのか、R.length
いつそれらが関数なのかがわからないため、次の例とは異なり、リフトさR.divide
れた関数をマップできません。R.sum
R.length
上記の場合、 、xs
、ys
およびの値はzs
、非決定論的なコンテキストで合計されます。この場合、持ち上げられた関数は、指定された計算コンテキストの値に適用されます。
R.ap
さらに詳しく説明すると、持ち上げられた関数を適用することは、各引数に連続して使用するようなものであることがわかりました。どちらの行も同じ出力に評価されます。
ドキュメントを確認すると、次のように書かれています。
アリティ > 1 の関数を「リフト」して、リスト、関数、または FantasyLand Apply 仕様を満たすその他のオブジェクトに「マップ」できるようにします。
そして、それは少なくとも私にとってはあまり有用な説明のようには思えません. の使用法に関する直感を構築しようとしていますlift
。誰かがそれを提供できることを願っています。
haskell - Haskell でリフトされた関数を (任意の長さの) タプルに適用する
リフトされた関数が 2 タプルに適用されると、2 番目のエントリにのみ適用される理由についての説明はありますか?
一方、2 以外の長さのタプルはエラーを返します。また
エラーを返します。f <$>
タプルに作用するときの型を見ることは可能ですか?
その行動について何か説明はありますか?
Data.Tuple のドキュメントは非常に簡潔で、関数がどのようにタプルに持ち上げられるかについては言及されていません。それを説明するソースはありますか?
アップデート。2-タプルに関する質問の一部はこの回答に関連していますが、複数の長さのタプルに関する上記の質問は扱われていません。