2012-02-13 24 views
3

分散システムでSchemeを使用しようとしています。考え方は、あるプロセスがいくつかの式を評価し、それを別のプロセスに渡して終了するというものです。Schemeの部分評価

例:

(do-stuff (f1 x) (f2 x)) 

は、最初のプロセスで

(do-stuff res1 (f2 x)) 

に評価されます。このプロセスは、マップは、スタイル作業配分を減らす行うことですが、周りのスキーム式を渡すことによって

(do-stuff res1 res2) 

アイデアにそれを評価します(別のノード上の)別のプロセスに文字列として式を渡します。これは可能ですか?任意のポインタが役立つだろう。 (私はIronScheme btwを使用しています)。

+0

あなたが何を求めているのかは不明です。 Schemeでmap/reduceを実装することは可能ですか?はい、確かに、適切なマルチタスクライブラリがあれば。 –

+2

これは実装固有の質問です。ラケットには、その先物とライブラリがあります。ここでは、セクション18.10とセクション18.11の紹介を見つけることができます:http://docs.racket-lang.org/guide/performance.html#(part._effective-futures)残念ながら、私はIronSchemeの世界には十分に精通していません同等のライブラリを指摘することはできません。 – dyoo

+0

あなたは 'delay'と' force'を使うことができますが、@larsmansのように、あなたがここで何を意味するのか分かりません。 'do-stuff'はここで複数のことをしていますが、これは混乱しています/あいまいです。 – leppie

答えて

0

本当の答えではなく、ヒントです。

継続しましたか? Here

私はあなたが必要とすることができると思います。

1

Aslan986は完全な継続をサポートすることを提案しています。残念ながら、Ironschemeは完全な継続をサポートしていませんが、コールスタックを上回るエスケープ継続のみをサポートしています。 Ironschemeのknown limitationsを参照してください。さらに、あるプロセスから別のプロセスにそれらを渡すために、継続を直列化する必要があります。一般に、これは常に可能なわけではなく、それをサポートするSchemeシステムはごくわずかです。一例はGambit-Cです。 distributed computingシステムの実装方法を示すプレゼンテーションがあります。