問題タブ [transducer]

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 に答える
1705 参照

clojure - ステートフル トランスデューサとは

1.7 リリースのClojure Core ドキュメント- 次の関数

API の説明に次のテキストを含める

そして、以下の機能

以下のテキストを用意してください。

さらに、この文言に対する批判もある

ここに画像の説明を入力

私の質問は:ステートフルトランスデューサーとは何ですか? つまり、グループ化された関数の類似点です。(これが、トランスデューサの型付けには依存型が必要であると人々が言う理由ですか? )

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

clojure - core.async はシーケンスに関してその機能を実装できたでしょうか?

Rich Hickey の Strange Loop トランスデューサのプレゼンテーションmapでは、Clojure 1.6 には の 2 つの実装があり、1 つは のシーケンス用でclojure.core、もう 1 つは のチャネル用であることがわかりますcore.async

ここに画像の説明を入力

これで、1.7 にはトランスデューサーがあり、コレクションではなく関数が与えられた場合、andのような高次関数からfoldr( ) 関数が返されることがわかりました。reducemapfilter

私が明確にしようとして失敗しているのは、なぜcore.async関数がシーケンスを返すことができないのか、または似ているのかということSeqです。「インターフェース」(プロトコル)が違うような気がしますが、どうすればよいかわかりません。

確かに、チャネルから最初のアイテムを取り出している場合、それをシーケンスから最初のアイテムを取り出していると表現できますか?

私の質問は次のとおりです。シーケンスの観点からその機能を実装できたでしょうか?core.async

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

haskell - トランスデューサは、部分的に適用された機能とどう違うのですか?

Clojure に関するこの記事 ( http://blog.podsnap.com/ducers2.html ) を読んでトランスデューサーを紹介した後、トランスデューサーとは何かについて混乱しました。トランスデューサmapなど、部分的に Haskell に適用されていますか? map (+1)最初は、これは部分適用を使用する Clojure の方法だと思っていましたが、この記事では、明示的な型を使用して Haskell で実装する方法に進みます。Haskell ではどのような用途がありますか?

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

transducer - What are transducers good for other than optimization and helping language/API designers?

After watching Rich Hickey's talk on transducers, my understanding is that they can

  1. greatly optimize performance of compositions of reducers (by removing the need for intermediate sequence representations)
  2. assist a language/API designer in getting reducers 'for free' over all of their sequences/iterables/streams/etc as long as they are implemented once as a transducer.

Beyond these advantages (which may not be relevant for many) are there any other benefits to coding with transducers?

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

scala - Scala トランスデューサーと Clojure トランスデューサーの類似点と相違点は何ですか?

Paul ChiusanoRúnar Óliは素晴らしい本『Functional programming in Scala 』を書きました。その中で彼らは、Scala コミュニティであまり参照されていない概念である Transducers について言及しています。

『Functional Programming In Scala』の Scala Transducers

Clojure コミュニティでは、Transducersもう少し 報道されます

私の質問は次のとおりです: Scala Transducers ** (本からの Functional Programming in Scala)と Clojure Transducersの類似点と相違点は何ですか?**

仮定:

私はそれを知っています

  1. トランスデューサは、電気工学における概念からの一般的な用語です。

  2. 有限状態変換器と呼ばれるコンピューター サイエンスの既存の概念があります。

  3. 伝達という言葉を採用した生物学と心理学の先例がある

  4. Transducersという言葉を採用したSICPのような他の技術書の歴史が既にあります。

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

haskell - Transducers in Haskell and the monomorphism restriction

I implemented transducers in Haskell as follows:

Now I want to define a generic map function. Hence I load the above code into GHCi:

So I can't define map = reduce . mapping. However, I can define map f = reduce (mapping f).

I believe that this problem is caused by the monomorphism restriction. I would really like to write map = reduce . mapping instead of map f = reduce (mapping f). Hence, I have two questions:

  1. What's causing this problem? Is it indeed the monomorphism restriction?
  2. How do I fix this problem?
0 投票する
1 に答える
1880 参照

haskell - Haskell の有限状態変換器?

Haskell で慣用的な方法で有限状態変換器を定義して操作する方法があるかどうか疑問に思っていました。

FST は、ジェネレーター({x1,x2} 型の出力を生成する)、または認識者 ({x1,x2} 型の入力が与えられた場合、それが有理関係に属しているかどうかを認識する)、またはトランスレーター(変換者) としてアプローチできます。入力テープを指定すると、それを出力テープに変換します)。アプローチ次第で表現が変わる?

書き換え規則を指定して FST を生成できるように、FST をモデル化することも可能でしょうか? たとえば、書き換えルールをモデル化する DSL を作成してから、関数を作成しますcreateFST :: [Rule] -> FST

私が見つけることができる最も近いものは、Kmett、Bjarnason、Cough のmachinesライブラリです: https://hackage.haskell.org/package/machines

しかし、FST を でモデル化する方法を理解できないようですMachine。それを行う正しい方法は、ムーアとミーリーのマシンを定義する方法に似ていると思います。FST を別のエンティティとして定義しますがAutomaton、マシンとして使用できるように のインスタンスを提供します。

他にもいくつかのオプションを見つけましたが、それらは簡単な方法で定義しています ( https://hackage.haskell.org/package/fstのように)。machinesHaskell の型システムの長所 (Moore と Mealy マシンがライブラリで定義されている方法など) を使用して慣用的にそうするより良い方法があるのではないかと思うので、それはあまり納得できません。

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

python - Python で DOT ファイルを解析する方法

変換器を DOT ファイル形式で保存しています。gvedit を使用してグラフのグラフィカル表現を表示できますが、DOT ファイルを実行可能なトランスデューサに変換して、トランスデューサをテストし、受け入れる文字列と受け入れない文字列を確認するにはどうすればよいでしょうか。

Openfst、Graphviz、およびそれらの Python 拡張機能で見たほとんどのツールでは、DOT ファイルはグラフィカルな表現を作成するためにのみ使用されますが、ファイルを解析して、文字列をテストできるインタラクティブなプログラムを取得したい場合はどうでしょうか。トランスデューサー?

タスクを実行するライブラリはありますか、それともゼロから作成する必要がありますか?

私が言ったように、DOT ファイルは私が設計した英語の形態をシミュレートする変換器に関連しています。巨大なファイルですが、どのように見えるかを示すために、サンプルを提供します。名詞と複数形に関して英語の振る舞いをモデル化する変換器を作成したいとしましょう。私の辞書は、たった 3 つの単語 (book、boy、girl) で構成されています。この場合のトランスデューサは次のようになります。

ここに画像の説明を入力

これは、この DOT ファイルから直接構築されます。

このトランスデューサーを言葉に対してテストすると、それをフィードするとbook+Pl吐き出されbooks、逆もまた同様であることがわかります。このような分析とテストを可能にする形式にドット ファイルを変換する方法を確認したいと思います。