問題タブ [transducer-machines]

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

haskell - 誰かが次の計画のマシン実装を提供できますか?

私は、Edward Kmett による machines モジュールをいじっていますが、あちこちで少し混乱しています。質問をする最良の方法は、おもちゃのユースケースを提供することだと思いました。以下で説明します。

マシン 1 と 2 は、Y 型の 2 つのプロングに配置されています。

マシン 1 は int のリストをパラメータとして取り、それを下流にプッシュします。マシン 2 は、文字のリストをパラメータとして取り、それを下流にプッシュします。

マシン 3 は、 から始まる内部状態を保持しmempty、その後mappends、何らかの条件で Y ベースからいずれかのマシンから受け取る要素 (両方ではない) を保持します。次に、マシン 3 が現在の状態を取得し、ダウンストリームにプッシュします。

マシン 4 は、受け取った要素をコンソールに出力します。

これまでのところ、私はこれを持っています:

しかし、y1 と y2 を組み合わせる方法がわかりません。または、Process.hs によってエクスポートされたストック コンビネーターの 1 つを使用するのではなく、状態を非表示にする任意のプロセスをロールします。

提案によると、machines パッケージへのリンク: http://hackage.haskell.org/package/machines

そして、それが何をするかについて非常に高レベルの説明を提供するpdf:https ://dl.dropboxusercontent.com/u/4588997/Machines.pdf

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

haskell - Data.Machine を使用して、非決定論的関数の結果で分岐する計画をどのように説明しますか?

この質問は、例で最もよく説明されていると思います。

非決定論的関数をラップする型:

ND:

注意: nd がタプルのリストを出力する方法に注意してください。各タプルには計算の結果が含まれており、新しいND(実際には元のものと同じですが、今は無視しましょう)。

次に、ソースから入力を受け取り、すべての入力に対して nd を実行するプロセスを構築します。

間違ったProcess:

注意: 計算の最初の結果のみが取得されるため、上記のプロセスは正しくありません。理想的には、プロセスは複数の並列プロセスに分岐し、それぞれが出力 b を生成し、独自のバージョンの を再帰する必要がありn'ます。最終結果は、可能な結果のリストでなければなりません

使用事例:

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

haskell - Data.Machine を使用して、2 つの異なる状態を変更する 2 つの ProcessT を一緒に構成するにはどうすればよいでしょうか?

基になる状態を変更するプロセスがあるとしましょうInt:

そして、次の基本的な状態を変更する別のもの[Int]

私はこのようにそれらを構成したい:

そして、それらを次のように実行します。

しかし、私はこのエラーが発生します:

p1 と p2 が同じタイプの基になる状態を持つ必要があることを示唆しています。実際、ちょっとした実験で、p1 と p2 が実際には同じ基礎となる状態を変更していることがわかります。どうすればこれを回避できますか?

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

scala - 解析タスクに Scalaz Stream を使用する (Scalaz Iteratees を置き換える)

序章

私は多くのプロジェクトで Scalaz 7の iteratees を使用していますが、主に大規模なファイルを処理するためです。iteratee パッケージを置き換えるように設計された Scalazストリームへの切り替えを開始したいと思います (率直に言って、多くの部分が欠落しており、使用するのが面倒です)。

ストリームは、Haskell にも実装されているマシン(繰り返しのアイデアの別のバリエーション) に基づいています。私は Haskell マシン ライブラリを少し使用しましたが、マシンとストリームの関係は (少なくとも私には) 完全には明らかではなく、ストリーム ライブラリのドキュメントはまだ少しまばらです。

この質問は、反復の代わりにストリームを使用して実装したい単純な解析タスクに関するものです。誰も私を打ち負かすことができなければ、私は自分で質問に答えますが、この移行を行っている (または少なくとも検討している) のは私だけではないと確信しています。公の場でやったほうがいいと思った。

仕事

トークン化され、品詞でタグ付けされた文を含むファイルがあるとします。

1 行に 1 つのトークンがあり、単語と品詞は 1 つのスペースで区切られ、空白行は文の境界を表します。このファイルを解析して、文のリストを返したいと思います。これは、文字列のタプルのリストとして表すこともできます。

いつものように、無効な入力やファイル読み取りの例外が発生した場合に正常に失敗したり、手動でリソースを閉じることを心配したりしたくありません。

反復ソリューション

最初に、いくつかの一般的なファイル読み取り用のもの (実際には iteratee パッケージの一部である必要があります。現在、この高レベルのものはリモートで提供されていません):

そして、センテンス リーダー:

そして最後に、解析アクション:

それが機能することを実証できます。

これで完了です。

私が欲しいもの

iteratee の代わりに Scalaz ストリームを使用して実装されたほぼ同じプログラム。

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

output - ムーア マシンの構築

宿題の質問があります:

a の b と c で構成される文字列を入力として取り、各部分文字列 abc の末尾に 1 を含み、他のすべての位置に 0 を含む文字列を出力する Moore マシンを構築します。例: 入力 aabcb は出力 000010 を生成します

構築してみましたが、行き止まりになってしまいました。これが私の試みです: ここに画像の説明を入力

ご覧のとおり、文字列 cccb を作成できず、'abc' は 0 を出力できます。この単純な問題を複雑にしすぎたように感じます。

編集:休憩を取って、それをやり直しました。誰かが私に別のことを言わない限り、これは正しいと思います:

ここに画像の説明を入力

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 投票する
0 に答える
361 参照

python - Python 使用時の Foma fst の問題

txt ファイルを含む完全なフォルダーをモーフィング分析しようとしています。

https://code.google.com/archive/p/foma/を使用

これは私が書いたコードです。Pythonで各単語をfoma fstに渡していますが、1900ファイルのうち143ファイルを実行した後、ループは無期限にスタックします。ループ内のfoma call applyupにコメントしてみましたファイルは問題なく新しいフォルダー (非ルート形式) に書き込まれました。

誰かが同様の問題に直面していますか? foma fst は、初期化後に呼び出すことができる回数にいくつかの制限があるということですか?

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

python - 単語の最初の文字に基づいて出力を生成する

Python 用の Helsinki Finite State Technology (HFST) を使用して、Finite State Transducer をセットアップしようとしています。

単語の最初の文字が「o」の場合、出力は「ポジティブ」になり、同じ単語に続く文字がある場合は、正規表現を使用してすべての文字を空に出力します。
ただし、「お」だけは受け付けません。

HFSTチュートリアルからこれまでに得たもの: