重要なメモ:Transientは新しいレポに翻訳されています
このレポは非推奨です
最後のバージョンについては、次のように移動してください。
https://github.com/transient-haskell/transientスタック
分散コンピューティング(Transient-Universe)とクライアント側Web(Axiom)を含むすべてのHaskellパッケージがあります

注:分散コンピューティングとWebプリミティブは、一時的な宇宙と公理にあります。 Transient-Examplesのいくつかの例
transientに関するいくつかのフィードバック:Rahul Muttineni @rahulmutt 11月。 09 2016 03:40 Lead DevelopPer of ETA(JVM Haskellコンパイラ)
それは、高レベルのリストモナドを使用するようなものであるという点で少し心を曲げていますが、とてもクールです。 Haskellersを始めるために、本当に役立つのは、さまざまな分散/並列を行うときに何が起こるかを視覚化することです。スレッド/ノード間で計算を実行できることは、どれほど楽に衝撃的です。
クールな部分は、分散設定の複合性です。 wormholeとteleportを介して、分散トランザクションの長いチェーンを構成して再利用できる高次のモナディック関数を作成できます。もう1つの利点は、トランザクションがファーストクラスになり、俳優間でロジックを配布する代わりに、 1つの場所で何が起こっているかを正確に確認できることです。
https://gitter.im/transient-transient-universe-hplay/lobby?at=58228CAA35E6CF05473303B
ソフトウェアエンジニアリングの夢の1つは、無制限の複合性です。
これは、これらの用語に置くことができます:
ap1とap2は、複数のスレッド、非同期IO、不確定性、イベント、およびおそらく分散コンピューティングを含むすべての効果を備えた任意の複雑さを備えた2つのアプリケーションとします。
次に、組み合わせ:
- ap1 <|> ap2 -- Alternative expression
- ap1 >>= x -> ap2 -- monadic sequence
- ap1 <> ap2 -- monoidal expression
- (,) <$> ap1 <*> ap2 -- Applicative expression
タイプが一致し、複合可能な新しいアプリケーションを生成する場合に可能です。
Transientはまさにそれを行います。
演算子<$> <*>および<>は、スレッド<|>分散プロセス、またはWebウィジェットのシーケンスの場合、並列性>>=表現します。したがって、これらの効果や他の効果が存在していても、すべてが構成可能です。
この目的のために、一時的なものは、並列性、イベント、非同期IO、早期終了、非決定的ロギング、分散コンピューティングのためのすべての主要な効果とプリミティブを備えた拡張可能な効果です。モナド変圧器を追加せずにより多くの効果で拡張することが可能であるため、複合性は保証されます。
このプログラムは、コンソールに「火災」を入力すると、Nノードから「HelloWorld」をストリーミングします
main = keep $ initNode $ inputNodes <|> distribStream
distribStream = do
local $ option " fire " " fire "
r <- clustered . local . choose $ repeat " hello world "
localIO $ print rチュートリアルを読んで、コンパイルして呼び出す方法を知ってください。
このプログラムは、ブラウザにリンクを提示し、クリックするとFibonnacci番号をブラウザにストリーミングします。 (Dockerをお持ちの場合は、コンソールからStraigeを実行できます。これを参照してください
main = keep . initNode $ webFib
webFib = onBrowser $ do
local . render $ wlink () (h1 " hello fibonacci numbers " )
r <- atRemote $ do
r <- local . threads 1 . choose $ take 10 fibs
localIO $ print r
localIO $ threadDelay 1000000
return r
local . render . rawHtml $ (h2 r)
where
fibs = 0 : 1 : zipWith (+) fibs ( tail fibs) :: [ Int ]このプログラムは両方の機能を組み合わせています。
main = keep . initNode $ inputNodes <|> webFib <|> distribStreamWikiはよりユーザー指向です
LiveCoding.tvでの私のビデオセッションは、チュートリアルやプレゼンテーションとして意図されていませんが、実行中の最新機能の一部を示しています。
記事はより技術的です:
これらの記事には実行可能な例が含まれています(サイトはHaskellスニペットの実行をサポートしなくなったためです)。
大規模な複合性が可能になると、実現する可能性のあるアイデアが無限にあります。短期的および長期的な目標があります。開発のステータスは定期的に公開されています。
最もクレイジーなものの中には、このフレームワークを他の言語に拡張し、相互運用可能にする可能性があります。パッケージ化されたアプリケーション全体をコンポーネントとして扱い、シェルがそのような種類の安全なドッキングを許可するオペレーティングシステムの新しいレイヤーにレゴピースとしてドッキングします。この構成可能なDockerは、あらゆる種類の複合性を可能にしますが、現在のDockerプラットフォームは、計算しない劣化モノイドの形式にすぎません。
貢献したいですか?貢献者のガイドラインを読んだことを確認してください。私たちはあなたとあなたのアイデアから話を聞きたいです。他の貢献者と連絡を取ります。
Transientの問題ページ
Transient-Universeの問題ページ
Axiomの問題ページ
面白いことを学んだら、ウィキに貢献することができます
また、スタック全体にわたって真のソフトウェアの複合性の潜在的な利点を充実させるためにより多くの時間を献身することを可能にするために、リード開発者に寄付することもできます。