2012-03-29 6 views
1

私たちはUniでこの割り当てをしています。私はhaskellで課題を行うことを切望しています。株式取引エンジンのシミュレーション。状況は、CSVからデータが入ってきており、各レコードを解析し、そのレコードがどの市場フェーズに割り当てられているかに応じて処理することを希望しています。 haskellを使用するための正当な理由は、私は重い機能システムとして取引エンジンを見ているということです。ハスケル取引エンジン

私はhaskellの経験がありましたが、マイナーな経験はありません。

私たちは、csvsを未処理の注文のキューにインポートし、メインプログラムにこの注文を処理するためにこのキューにアクセスさせるスレッドを実行したがっていました。しかし、どうすればこれを達成することができますか?私はC#で知っているだけで、未処理のキューを保持するCSVParserクラスにアクセスできるようにクラスを設定します。これは、インポートスレッドがすべてのマーケットフェーズを介して継続的に実行されていること、またはcsvファイルのインポートが完了するまでのことを意味します。

これを達成する方法に関するガイダンスは素晴らしいと思います! (完全に型付けされたスクリプトを探すのではなく、私が見なければならないことは、あなたが見なければならないもの)

答えて

4

あなたが求めていることは明確ではありません。

  • 新しいスレッドを開始するには、Control.ConcurrentのforkIOを使用します。
  • あるスレッドから別のスレッドにデータをキューイングするには、Control.Concurrent.ChanのChanに興味があります。他のControl.Concurrent。*抽象化も利用可能です(より重いものが必要な場合は、stmパッケージもあります)。
  • CSVを解析するには、Hackage package listで「CSV」を検索してください。私はCSVを解析するためにHaskellを使用していないので、どちらを使うべきかアドバイスすることはできません。
+0

あなたの2番目のポイントは完全に答えました。私は、chanのアイデアは、2つのスレッドが同じチャンネルを共有できるということを前提としていますか?つまり、未処理のキューは、共有するチャネルになります。 – Abstract

+1

はい、チャンネルに1つ以上のスレッド(1つ以上のスレッド)を書き込むことができ、スレッドから別のスレッド(またはそれ以上)を読み込むことができます。 – dave4420

+0

ありがとうございました!うん、その完璧。すぐにコーディングを開始するつもりです – Abstract