Nota importante: Transient se traduce a un nuevo repositorio
Este repositorio está en desuso
Por favor, para la última versión, vaya a:
https://github.com/transient-haskell/transient-stack
Hay todos los paquetes de Haskell, incluida la computación distribuida (transitorio-universo) y la web del lado del cliente (axiom)

Nota: La computación distribuida y las primitivas web se encuentran en el universo transitorio y el axioma. Algunos ejemplos en pruebas transitorias
transient :Rahul Muttineni @rahulmutt Nov. 09 2016 03:40 Desarrollo principal de ETA (el compilador JVM Haskell)
Es un poco mental doblarse, ya que es como usar una lista de nivel superior mónada, pero es muy, muy genial. Para los principiantes de Haskellers, lo que sería realmente útil es una visualización de lo que sucede cuando haces varias cosas distribuidas/paralelas. Es casi impactante lo sin esfuerzo que puedes ejecutar cálculos a través de hilos/nodos.
La parte fría es la composibilidad en la configuración distribuida. Puede realizar funciones monádicas de orden superior que le permitan componer y reutilizar una larga cadena de transacciones distribuidas a través de wormhole and teleport . Otro beneficio es que la transacción se convierte en primera clase y puede ver exactamente lo que está sucediendo en un solo lugar en lugar de distribuir la lógica entre los actores, lo que hace que el código sea equivalente a las devoluciones de llamada de eventos, como ha dicho.
https://gitter.im/transient-transient-universe-hplay/lobby?at=58228caa35e6cf054773303b
Uno de los sueños de la ingeniería de software es la composibilidad sin restricciones.
Esto se puede poner en estos términos:
Deje ap1 y ap2 dos aplicaciones con complejidad arbitraria, con todos los efectos que incluyen múltiples hilos, IO asíncrono, indeterminismo, eventos y tal vez, informática distribuida.
Entonces las combinaciones:
- ap1 <|> ap2 -- Alternative expression
- ap1 >>= x -> ap2 -- monadic sequence
- ap1 <> ap2 -- monoidal expression
- (,) <$> ap1 <*> ap2 -- Applicative expression
son posibles si los tipos coinciden y generan nuevas aplicaciones que también son compuestas.
Transitorio hace exactamente eso.
Los operadores <$> <*> y <> expresan concurrencia, el operador <|> expresa paralelismo y >>= para la secuenciación de subprocesos, procesos distribuidos o widgets web. Entonces, incluso en presencia de estos efectos y otros, todo es compuesto.
Para este propósito, transitorio es una monad de efectos extensibles con todos los efectos principales y primitivas para el paralelismo, eventos, IO asíncrono, terminación temprana, registro no determinismo y computación distribuida. Dado que es posible extenderlo con más efectos sin agregar transformadores de mónadas, se asegura la composición.
Este programa transmitirá "Hello World" de N nodos si ingresas "Fuego" en la consola
main = keep $ initNode $ inputNodes <|> distribStream
distribStream = do
local $ option " fire " " fire "
r <- clustered . local . choose $ repeat " hello world "
localIO $ print rLea el tutorial para saber cómo compilarlo e invocarlo.
Este programa presentará un enlace en el navegador y transmitirá los números de Fibonnacci al navegador cuando haga clic en él. (Si tiene Docker, puede ejecutarlo en la consola; vea esto
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 funcionalidades:
main = keep . initNode $ inputNodes <|> webFib <|> distribStreamEl wiki está más orientado al usuario
Mis sesiones de video en Livecoding.tv no pretendían ser tutoriales o presentaciones, pero muestran algunas de las últimas características en ejecución.
Los artículos son más técnicos:
Estos artículos contienen ejemplos ejecutables (no ahora, ya que el sitio ya no admite la ejecución de los fragmentos de Haskell).
Una vez que es posible la composibilidad en el gran, hay una cantidad infinita de ideas que se pueden realizar. Hay objetivos a corto y largo plazo. Un estado de desarrollo se publica regularmente en.
Entre los más locos está la posibilidad de extender este marco a otros idiomas y hacerlos interoperables. Tratar las aplicaciones empaquetadas completas como componentes y acoplarlas como piezas de LEGO en una nueva capa del sistema operativo donde el shell permite este tipo de acoplamiento seguro. Este Docker compuesto permite todo tipo de composición, mientras que la plataforma Docker actual es solo una forma de monoide degradado que no calcula.
¿Quieres contribuir? Asegúrese de que haya leído nuestras pautas de contribuyentes. Nos gustaría saber de usted y sus ideas, póngase en contacto con otros contribuyentes a través de:
La página de problemas para transitorios
La página de problemas para el universo transitorio
La página de problemas para axiom
Una vez que aprendes algo interesante, puedes contribuir a la wiki
También puede donar al desarrollador principal para hacer posible la dedicación de más tiempo para completar las posibles ventajas de la verdadera composibilidad de software en toda la pila.