問題タブ [pointfree]

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.

0 投票する
1 に答える
833 参照

haskell - 無意味なコードを理解するのに役立ちます

Pointfreeをいじっていると、理解できないようなコードが提示されました。

私の主な問題は、ここでどのように機能するかがわからないことjoinです。モナドラッピングの1つのレイヤーを「削除」することを理解しています(m (m a)to m a)。のようなもの[1..10] >>= (\x -> [x * x])になると思いますが、「余分なレイヤー」がどのように導入されるかはよくわかりません。私はそれを取得しますがjoin x = x >>= id、それが各値を「複製」し(*)て2つの引数を取得する方法にまだこだわっています。これは約30分間私を悩ませてきました.私はすべてのパズルのピースを持っているように感じますが、それらを組み合わせることができないようです.

PS 心配しないでください。私はこの無意味なバージョンを実際には使用しません。これは純粋な好奇心であり、Haskell をよりよく理解しようとする試みです。

0 投票する
4 に答える
3052 参照

scala - Scala でのポイント フリー スタイルの事例

これは、ここで FP を理解している人にとっては非常に明白に思えるかもしれませんが、Scala のポイントフリー スタイルは何の役に立つのでしょうか? このトピックで本当に私を売り込むのは、ポイントフリースタイルが、非ポイントフリースタイルで同じ問題を解決するコードよりも、ある次元 (パフォーマンス、エレガンス、拡張性、保守性など) でいかに優れているかを示す図です。

0 投票する
3 に答える
559 参照

haskell - Haskell での関数合成に関する混乱

ghci の次の関数定義を検討してください。

どこ、 。2 つの関数の合成 (右結合) を表します。これは私が呼び出すことができます

そして、それは私に望ましい結果をもたらします。どうやら、リスト [3.14, 3.14] を関数「sum」に渡し、その「結果」を cos などに渡します。ただし、これをインタープリターで行うと

また

それから私はトラブルに遭遇します。これを次のように変更すると、望ましい結果が得られます。

また

(.) の型は、'sum y' も関数であるため、次の形式に問題がないことを示唆しています (そうではありませんか? 結局、Haskell ではすべてが関数なのでしょうか?)。

さらに興味深いのは、2 つ (または多数) の引数 (リスト [3.14, 3.14] を 2 つの引数 x と y として渡すことを考えてください) で動作させることができることです。次のように記述する必要があります。

HaskellWiki には、「PointFree」フォームhttp://www.haskell.org/haskellwiki/Pointfreeと呼ばれるこのフォームに関するいくつかの議論があります。この記事を読んで、この形式は 2 つのラムダ式の合成とは異なるのではないかと疑っています。これらのスタイルの両方を区切る線を引こうとすると、混乱してしまいます。

0 投票する
6 に答える
586 参照

f# - 関数型プログラミングで関数をポイントフリー スタイルで定義する。短所/長所は何ですか?

フォームの何かを書くたびに

私は自分自身に尋ねることになります

代わりは。2 番目の形式ではなく、最初の形式で記述する利点はありますか?

また、最初の形式と 2 番目の形式で関数定義をどのように呼び出しますか?

0 投票する
2 に答える
247 参照

haskell - インタラクションをポイントフリーにするにはどうすればよいですか?

上記のコードで、インタラクション関数をポイントフリースタイルで作成するにはどうすればよいですか。

0 投票する
5 に答える
340 参照

haskell - 2つのモナディック値をペアにして、それを返します

私はParsecで遊んでおり、2つのパーサーを1つに結合して、結果をペアにした後、別の関数をフィードして、解析結果を操作し、次のように記述します。

だから私はこれを書いた:

どこかに実装されている(<&>)に似たものはありますか?それとも、これはポイントフリーで書くことができますか?試してみfmap (,)ましたが、タイプに合わせるのが難しいようです。

0 投票する
3 に答える
204 参照

debugging - なぜこのタイプチェックをしないのですか?

compress xs@(_:_:_) = (ifte <$> ((==) <$> head <*> head.tail) <$> ((compress.).(:) <$> head <*> tail.tail) <*> ((:) <$> head <*> compress.tail) ) xs

タイプエラーが発生しますが、理由がわかりません。と同等である必要があります

compress xs@(_:_:_) = (ifte (((==) <$> head <*> head.tail) xs) (((compress.).(:) <$> head <*> tail.tail) xs) (((:) <$> head <*> compress.tail) xs))

、そうではありません。

注:ifte = (\ x y z -> if x then y else z)<$>および<*>はからControl.Applicativeです。

編集:エラーは次のとおりです。

私は、99のHaskell問題の問題8に対する無意味な解決策を書き込もうとして、この問題に遭遇しました。私は自分が書いた意味のある解決策を修正することによってそれをやろうとしていました。

0 投票する
5 に答える
698 参照

haskell - ポイントフリー スタイルと $ の使用

$使用スタイルとポイントフリー スタイルをどのように組み合わせますか?

明確な例は、次のユーティリティ関数です。

書くだけconcat $ replicateでエラーが発生します。同様に、関数ではなく値を期待しているconcat . replicateため、書くこともできません。concat

では、上記の関数をポイントフリー スタイルにするにはどうすればよいでしょうか。

0 投票する
4 に答える
4491 参照

haskell - ポイントフリースタイルの単純な Haskell 関数

Haskell で関数をポイントフリー表記に変換する方法を理解しようとしています。この例を見ましたが、探しているものよりも複雑です。その背後にあるロジックを理解しているように感じますが、コードでいくつかの簡単な例を実行しようとすると、コンパイル エラーが発生します。この関数をポイントフリー スタイルで書きたいと思います。

f x = 5 + 8/x私は次のように再配置しましたf x = (+) 5 $ (/) 8 x

だから、私はそれが次のようなものかもしれないと思った:

しかし、これを ghci で実行すると、次のメッセージが表示されます。

「... のインスタンスがありません」というメッセージがわかりません。この関数をポイントフリー スタイルで記述するにはどうすればよいですか?

0 投票する
3 に答える
1276 参照

haskell - ポイントフリースタイルのHaskellの要素数

与えられた述語を満たすリスト内の要素の数を計算する関数を定義したいと思います。

例えば:

2を返す必要があります。

短く書くことができます:

fパラメータなしで書くことは可能ですか?