Nota importante: o transiente está sendo traduzido para um novo repositório
Este repo está preguiçoso
Por favor, para a última versão, vá para:
https://github.com/transient-haskell/transient-stack
Existem todos os pacotes Haskell, incluindo computação distribuída (transitório-universo) e web do lado do cliente (Axiom)

Nota: A computação distribuída e as primitivas da Web estão no universo transitório e no axioma. Alguns exemplos em exemplos transitórios
transient :Rahul Muttineni @rahulmutt Nov. 09 2016 03:40 Desenvolvedor de chumbo do ETA (o compilador JVM Haskell)
É um pouco flexível, pois é como usar uma mônada de lista de nível superior, mas é muito, muito legal. Para o início do Haskellers, o que seria realmente útil é uma visualização do que acontece quando você faz várias coisas distribuídas/paralelas. É quase chocante o quão sem esforço você pode executar cálculos em threads/nós.
A parte legal é a composibilidade na configuração distribuída. Você pode fazer funções monádicas de ordem superior que permitem compor e reutilizar uma longa cadeia de transações distribuídas por wormhole e teleport . Outro benefício é que a transação se torna de primeira classe e você pode ver exatamente o que está acontecendo em um só lugar, em vez de distribuir a lógica entre os atores, tornando o código equivalente a retornos de chamada do evento, como você declarou.
https://gitter.im/transient-transient-universe-hplay/lobby?at=58228caa35e6cf054773303b
Um dos sonhos da engenharia de software é a composibilidade irrestrita.
Isso pode ser colocado nestes Termos:
Deixe ap1 e ap2 duas aplicações com complexidade arbitrária, com todos os efeitos, incluindo vários threads, IO assíncrono, indeterminismo, eventos e talvez computação distribuída.
Então as combinações:
- ap1 <|> ap2 -- Alternative expression
- ap1 >>= x -> ap2 -- monadic sequence
- ap1 <> ap2 -- monoidal expression
- (,) <$> ap1 <*> ap2 -- Applicative expression
são possíveis se os tipos corresponderem e gerar novos aplicativos que também são composíveis.
Transiente faz exatamente isso.
Os operadores <$> <*> e <> expressam simultaneidade, o operador <|> expresso paralelismo e >>= para sequenciamento de threads, processos distribuídos ou widgets da web. Assim, mesmo na presença desses efeitos e de outros, tudo é composto.
Para esse fim, o transitório é uma mônada de efeitos extensíveis, com todos os efeitos e primitivos principais para o paralelismo, eventos, IO assíncrono, rescisão precoce, registro não determinismo e computação distribuída. Como é possível estendê -lo com mais efeitos sem adicionar transformadores da Monad, a composibilidade é garantida.
Este programa, transmitirá "Hello World" a partir de n nós se você entrar em "fogo" no console
main = keep $ initNode $ inputNodes <|> distribStream
distribStream = do
local $ option " fire " " fire "
r <- clustered . local . choose $ repeat " hello world "
localIO $ print rLeia o tutorial para saber como compilar e invocar.
Este programa apresentará um link nos números do navegador e do fluxo de Fibonnacci no navegador quando você clicar nele. (Se você tem o Docker, pode executá -lo reto do console; veja isso
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 ]Este programa combina ambas as funcionalidades:
main = keep . initNode $ inputNodes <|> webFib <|> distribStreamO wiki é mais orientado ao usuário
Minhas sessões de vídeo em LiveCoding.tv não destinam -se a tutoriais ou apresentações, mas mostram alguns dos recursos mais recentes em execução.
Os artigos são mais técnicos:
Esses artigos contêm exemplos executáveis (não agora, pois o site não suporta mais a execução de trechos de haskell).
Uma vez possível a composibilidade grande, há uma quantidade infinita de idéias que podem ser realizadas. Existem metas de curto e longo prazo. Um status de desenvolvimento é publicado regularmente em.
Entre os mais loucos está a possibilidade de estender essa estrutura a outros idiomas e torná -los interoperáveis. Tratar aplicativos empacotados inteiros como componentes e encaixá -los como peças LEGO em uma nova camada do sistema operacional, onde o shell permite esse tipo de encaixe seguro. Este docker composto permite todos os tipos de composibilidade, enquanto a plataforma atual do Docker é apenas uma forma de monoid degradado que não calcula.
Quer contribuir? Certifique -se de que você leu nossas diretrizes de colaborador. Gostaríamos de ouvir de você e de suas idéias, entrar em contato com outros colaboradores por meio de:
A página de problemas para transitórios
A página de problemas para o universo transitório
A página de problemas para o axioma
Depois de aprender algo interessante, você pode contribuir para o wiki
Você também pode doar ao desenvolvedor principal para possibilitar a dedicação de mais tempo para obter as vantagens potenciais da verdadeira composibilidade de software em toda a pilha.