-
Notifications
You must be signed in to change notification settings - Fork 37
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'release-0.11.2'. Refs #377.
- Loading branch information
Showing
11 changed files
with
383 additions
and
86 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,7 @@ | ||
2023-08-21 Ivan Perez <[email protected]> | ||
* Version bump (0.14.4) (#377). | ||
* Offer all definitions from FRP.Yampa.Basic (#376). | ||
|
||
2023-06-21 Ivan Perez <[email protected]> | ||
* Version bump (0.14.3) (#372). | ||
* Offer all definitions from FRP.Yampa.Arrow (#360). | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -30,7 +30,7 @@ cabal-version: >= 1.10 | |
build-type: Simple | ||
|
||
name: bearriver | ||
version: 0.14.3 | ||
version: 0.14.4 | ||
author: Ivan Perez, Manuel Bärenz | ||
maintainer: [email protected] | ||
homepage: https://github.com/ivanperez-keera/dunai | ||
|
@@ -77,8 +77,12 @@ library | |
exposed-modules: | ||
FRP.BearRiver | ||
FRP.BearRiver.Arrow | ||
FRP.BearRiver.Basic | ||
FRP.Yampa | ||
|
||
other-modules: | ||
FRP.BearRiver.InternalCore | ||
|
||
build-depends: | ||
base >= 4.6 && <5 | ||
, deepseq >= 1.3.0.0 && < 1.5 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
-- | | ||
-- Module : FRP.BearRiver.Basic | ||
-- Copyright : (c) Ivan Perez, 2014-2022 | ||
-- (c) George Giorgidze, 2007-2012 | ||
-- (c) Henrik Nilsson, 2005-2006 | ||
-- (c) Antony Courtney and Henrik Nilsson, Yale University, 2003-2004 | ||
-- License : BSD-style (see the LICENSE file in the distribution) | ||
-- | ||
-- Maintainer : [email protected] | ||
-- Stability : provisional | ||
-- Portability : non-portable (GHC extensions) | ||
-- | ||
-- Defines basic signal functions, and elementary ways of altering them. | ||
-- | ||
-- This module defines very basic ways of creating and modifying signal | ||
-- functions. In particular, it defines ways of creating constant output | ||
-- producing SFs, and SFs that just pass the signal through unmodified. | ||
-- | ||
-- It also defines ways of altering the input and the output signal only by | ||
-- inserting one value in the signal, or by transforming it. | ||
module FRP.BearRiver.Basic | ||
( | ||
-- * Basic signal functions | ||
identity | ||
, constant | ||
|
||
-- ** Initialization | ||
, (-->) | ||
, (-:>) | ||
, (>--) | ||
, (-=>) | ||
, (>=-) | ||
, initially | ||
) | ||
where | ||
|
||
-- External imports | ||
import qualified Control.Category as Category | ||
|
||
-- Internal imports (dunai) | ||
import Data.MonadicStreamFunction.InternalCore (MSF (MSF, unMSF)) | ||
|
||
-- Internal imports | ||
import FRP.BearRiver.InternalCore (SF, arr) | ||
|
||
infixr 0 -->, -:>, >--, -=>, >=- | ||
|
||
-- * Basic signal functions | ||
|
||
-- | Identity: identity = arr id | ||
-- | ||
-- Using 'identity' is preferred over lifting id, since the arrow combinators | ||
-- know how to optimise certain networks based on the transformations being | ||
-- applied. | ||
identity :: Monad m => SF m a a | ||
identity = Category.id | ||
|
||
-- | Identity: constant b = arr (const b) | ||
-- | ||
-- Using 'constant' is preferred over lifting const, since the arrow combinators | ||
-- know how to optimise certain networks based on the transformations being | ||
-- applied. | ||
constant :: Monad m => b -> SF m a b | ||
constant = arr . const | ||
|
||
-- * Initialization | ||
|
||
-- | Initialization operator (cf. Lustre/Lucid Synchrone). | ||
-- | ||
-- The output at time zero is the first argument, and from that point on it | ||
-- behaves like the signal function passed as second argument. | ||
(-->) :: Monad m => b -> SF m a b -> SF m a b | ||
b0 --> sf = MSF $ \a -> do | ||
(_b, sf') <- unMSF sf a | ||
return (b0, sf') | ||
|
||
-- | Output pre-insert operator. | ||
-- | ||
-- Insert a sample in the output, and from that point on, behave like the given | ||
-- sf. | ||
(-:>) :: Monad m => b -> SF m a b -> SF m a b | ||
b -:> sf = MSF $ \_a -> return (b, sf) | ||
|
||
-- | Input initialization operator. | ||
-- | ||
-- The input at time zero is the first argument, and from that point on it | ||
-- behaves like the signal function passed as second argument. | ||
(>--) :: Monad m => a -> SF m a b -> SF m a b | ||
a0 >-- sf = MSF $ \_ -> unMSF sf a0 | ||
|
||
-- | Transform initial output value. | ||
-- | ||
-- Applies a transformation 'f' only to the first output value at time zero. | ||
(-=>) :: Monad m => (b -> b) -> SF m a b -> SF m a b | ||
f -=> sf = MSF $ \a -> do | ||
(b, sf') <- unMSF sf a | ||
return (f b, sf') | ||
|
||
-- | Transform initial input value. | ||
-- | ||
-- Applies a transformation 'f' only to the first input value at time zero. | ||
(>=-) :: Monad m => (a -> a) -> SF m a b -> SF m a b | ||
f >=- sf = MSF $ \a -> do | ||
(b, sf') <- unMSF sf (f a) | ||
return (b, sf') | ||
|
||
-- | Override initial value of input signal. | ||
initially :: Monad m => a -> SF m a a | ||
initially = (--> identity) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
-- | | ||
-- Module : FRP.Dunai.InternalCore | ||
-- Copyright : (c) Ivan Perez, 2014-2022 | ||
-- (c) George Giorgidze, 2007-2012 | ||
-- (c) Henrik Nilsson, 2005-2006 | ||
-- (c) Antony Courtney and Henrik Nilsson, Yale University, 2003-2004 | ||
-- License : BSD-style (see the LICENSE file in the distribution) | ||
-- | ||
-- Maintainer : [email protected] | ||
-- Stability : provisional | ||
-- Portability : non-portable (GHC extensions) | ||
-- | ||
-- Domain-specific language embedded in Haskell for programming hybrid (mixed | ||
-- discrete-time and continuous-time) systems, extended with Monads. | ||
-- | ||
-- Bearriver (a tributary to the Yampa river) provides the same API as Yampa, | ||
-- but implemented using Monadic Stream Functions underneath. SFs in BearRiver | ||
-- take an additional monad as argument. The introduction of time is done by | ||
-- means of an additional Reader layer. | ||
module FRP.BearRiver.InternalCore | ||
( module Control.Arrow | ||
|
||
-- * Basic definitions | ||
-- ** Time | ||
, Time | ||
, DTime | ||
|
||
-- ** Signal Functions | ||
, SF | ||
, ClockInfo | ||
) | ||
where | ||
|
||
-- External imports | ||
import Control.Arrow (Arrow (..), ArrowChoice (..), ArrowLoop (..), (>>>)) | ||
|
||
-- Internal imports (dunai) | ||
import Control.Monad.Trans.MSF (ReaderT) | ||
import Data.MonadicStreamFunction (MSF) | ||
|
||
-- * Basic type definitions with associated utilities | ||
|
||
-- | Time is used both for time intervals (duration), and time w.r.t. some | ||
-- agreed reference point in time. | ||
type Time = Double | ||
|
||
-- | DTime is the time type for lengths of sample intervals. Conceptually, | ||
-- DTime = R+ = { x in R | x > 0 }. Don't assume Time and DTime have the same | ||
-- representation. | ||
type DTime = Double | ||
|
||
-- | Extensible signal function (signal function with a notion of time, but | ||
-- which can be extended with actions). | ||
-- | ||
-- Signal function that transforms a signal carrying values of some type 'a' | ||
-- into a signal carrying values of some type 'b'. You can think of it as | ||
-- (Signal a -> Signal b). A signal is, conceptually, a function from 'Time' to | ||
-- value. | ||
type SF m = MSF (ClockInfo m) | ||
|
||
-- | Information on the progress of time. | ||
type ClockInfo m = ReaderT DTime m |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,6 @@ | ||
2023-08-21 Ivan Perez <[email protected]> | ||
* Version bump (0.11.2) (#377). | ||
|
||
2023-06-21 Ivan Perez <[email protected]> | ||
* Version bump (0.11.1) (#372). | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -30,7 +30,7 @@ cabal-version: >= 1.10 | |
build-type: Simple | ||
|
||
name: dunai-test | ||
version: 0.11.1 | ||
version: 0.11.2 | ||
author: Ivan Perez | ||
maintainer: [email protected] | ||
homepage: https://github.com/ivanperez-keera/dunai | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,7 @@ | ||
2023-08-21 Ivan Perez <[email protected]> | ||
* Version bump (0.11.2) (#377). | ||
* Introduce benchmark (#375). | ||
|
||
2023-06-21 Ivan Perez <[email protected]> | ||
* Version bump (0.11.1) (#372). | ||
* Reflect new contribution process in README (#362). | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.