Packages

A reactive programming library for Elixir. The purpose of this library is to experiment in an academic context.

Current section

Files

Jump to
reactivity lib reactive_test.ex
Raw

lib/reactive_test.ex

defmodule Reactivity.Test do
require Integer
require Logger
alias Reactivity.Signal.Source
alias Reactivity.Signal.Derived
def hot_cold(t) do
if t > 30 do
"hot"
else
"cold"
end
end
def test do
# Start some source signals
{:ok, t} = Source.new(fn(_old_value) -> Enum.random(10..100) end, -1, 5000, :temperature)
#{:ok, h} = Source.new(fn(_old_value) -> Enum.random(60..100) end, -1, 2000, :humidity)
# Print out "hot" or "cold" when temp changes.
t
|> Reactivity.liftapp(&hot_cold/1)
|> Reactivity.liftapp(&(Logger.debug "Celcius: #{&1}"))
# Create a new signal in Kelvin.
kelvin = t |> Reactivity.liftapp(&(&1 + 237.15))
# Print out hot/cold for the kelvin signal
kelvin
|> Reactivity.liftapp(&hot_cold/1)
|> Reactivity.liftapp(&(Logger.debug "Kelvin: #{&1}"))
end
end