packages feed

Cabal revisions of AsyncRattus-0.1

Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.

revision 1
-cabal-version:       1.18-name:                AsyncRattus-version:             0.1-category:            FRP-synopsis:            An asynchronous modal FRP language-description:--            This library implements the Async Rattus programming-            language as an embedded DSL. To this end the library-            provides a GHC plugin that checks the stricter typing-            rules of Async Rattus.-            -            -            What follows is a brief introduction to the language and-            its usage. A more detailed introduction can be found in-            this <src/docs/paper.pdf paper>.-            -            .-            -            Async Rattus is a functional reactive programming (FRP)-            language that uses modal types to express temporal-            dependencies. In return the language will guarantee that-            programs are productive (in each computation step, the-            program makes progress), causal (output depends only on-            current and earlier input), and have no space leaks-            (programs do not implicitly retain memory over time).-            -            .-            -            The modal type constructor @O@ (pronounced "later") is-            used to express the passage of time at the type-            level. Intuitively speaking, a value of type @O a@-            represents a computation that will produce a value of type-            @a@ in the next time step. Additionally, the language also-            features the @Box@ modal type constructor. A value of type-            @Box a@ is a time-independent computation that can be-            executed at any time to produce a value of type @a@.--            .--            For example, the type of signals is defined as--            .--            > data Sig a = a ::: (O (Sig a))--            .--            So the current value of the signal is available now, but-            its future state is only available in the next time-            step. Writing a @map@ function for this type of streams,-            requires us to use the @Box@ modality:--            .--            > map :: Box (a -> b) -> Sig a -> Sig b-            > map f (x ::: xs) = unbox f x ::: delay (map f (adv xs))--            .--            This makes sure that the function @f@ that we give to-            @map@ is available at any time in the future.--            .--            The core of the language is defined in the module-            "AsyncRattus.Primitives". Note that the operations on @O@-            and @Box@ have non-standard typing rules. Therefore, this-            library provides a compiler plugin that checks these-            non-standard typing rules. To write Async Rattus programs,-            you must enable this plugin via the GHC option-            @-fplugin=AsyncRattus.Plugin@, e.g. by including the following-            line in the source file:-            -            .-            -            > {-# OPTIONS -fplugin=AsyncRattus.Plugin #-}-            -            .--            In addition, you have to annotate functions that are-            written in Async Rattus:--            .-            -            > {-# ANN myFunction AsyncRattus #-}--            .--            You can also annotate the whole module as an Async Rattus module:-            -            .--            > {-# ANN module AsyncRattus #-}--            .--            Below is a minimal Async Rattus program using the-            "AsyncRattus.Signal" module for programming with signals:--            .--            > {-# OPTIONS -fplugin=AsyncRattus.Plugin #-}-            >     -            > import AsyncRattus-            > import AsyncRattus.Signal-            > -            > {-# ANN sums AsyncRattus #-}-            > sums :: Sig Int -> Sig Int-            > sums = scan (box (+)) 0--            .--            The <docs/src/AsyncRattus.Signal.html source code of the AsyncRattus.Signal module>-            provides more examples on how to program in Async Rattus.-            An example project using Async Rattus can be found-            <https://github.com/pa-ba/AsyncRattus/tree/master/examples/console here>.--homepage:            https://github.com/pa-ba/AsyncRattus/-bug-reports:         https://github.com/pa-ba/AsyncRattus/issues-License:             BSD3-License-file:        LICENSE-copyright:           Copyright (C) 2023 Emil Houlborg, Gregers Rørdam, Patrick Bahr-Author:              Emil Houlborg, Gregers Rørdam, Patrick Bahr-maintainer:          Patrick Bahr <paba@itu.dk>-stability:           experimental--build-type:          Custom--extra-source-files:  CHANGELOG.md--extra-doc-files:     docs/paper.pdf-                     -custom-setup-  setup-depends:-    base  >= 4.5 && < 5,-    Cabal >= 1.18  && < 4---library-  exposed-modules:     AsyncRattus-                       AsyncRattus.Signal-                       AsyncRattus.Future-                       AsyncRattus.Strict-                       AsyncRattus.Plugin-                       AsyncRattus.Primitives-                       AsyncRattus.InternalPrimitives-                       AsyncRattus.Channels-                       AsyncRattus.Plugin.Annotation-                                              -  other-modules:       AsyncRattus.Plugin.ScopeCheck-                       AsyncRattus.Plugin.SingleTick-                       AsyncRattus.Plugin.CheckClockCompatibility-                       AsyncRattus.Plugin.Strictify-                       AsyncRattus.Plugin.Utils-                       AsyncRattus.Plugin.Dependency-                       AsyncRattus.Plugin.StableSolver-                       AsyncRattus.Plugin.Transform-                       AsyncRattus.Plugin.PrimExpr-  build-depends:       base >=4.16 && <5,-                       containers >= 0.6.5 && < 0.8,-                       ghc >= 9.2 && < 9.7,-                       hashtables >= 1.3.1 && < 1.4,-                       simple-affine-space >= 0.2.1 && < 0.3,-                       transformers >= 0.5.6 && < 0.7-  hs-source-dirs:      src-  default-language:    Haskell2010-  ghc-options:         -W----Test-Suite ill-typed-  type:                exitcode-stdio-1.0-  main-is:             test/IllTyped.hs-  default-language:    Haskell2010-  build-depends:       AsyncRattus, base-  ghc-options:         -fplugin=AsyncRattus.Plugin---Test-Suite well-typed-  type:                exitcode-stdio-1.0-  main-is:             WellTyped.hs-  hs-source-dirs:      test-  default-language:    Haskell2010-  build-depends:       AsyncRattus, base, containers-  ghc-options:         -fplugin=AsyncRattus.Plugin-+cabal-version:       1.18
+name:                AsyncRattus
+version:             0.1
+x-revision: 1
+category:            FRP
+synopsis:            An asynchronous modal FRP language
+description:
+
+            This library implements the Async Rattus programming
+            language as an embedded DSL. To this end the library
+            provides a GHC plugin that checks the stricter typing
+            rules of Async Rattus.
+            
+            
+            What follows is a brief introduction to the language and
+            its usage. A more detailed introduction can be found in
+            this <https://bahr.io/pubs/files/asyncrattus-paper.pdf>.
+            
+            .
+            
+            Async Rattus is a functional reactive programming (FRP)
+            language that uses modal types to express temporal
+            dependencies. In return the language will guarantee that
+            programs are productive (in each computation step, the
+            program makes progress), causal (output depends only on
+            current and earlier input), and have no space leaks
+            (programs do not implicitly retain memory over time).
+            
+            .
+            
+            The modal type constructor @O@ (pronounced "later") is
+            used to express the passage of time at the type
+            level. Intuitively speaking, a value of type @O a@
+            represents a computation that will produce a value of type
+            @a@ in the next time step. Additionally, the language also
+            features the @Box@ modal type constructor. A value of type
+            @Box a@ is a time-independent computation that can be
+            executed at any time to produce a value of type @a@.
+
+            .
+
+            For example, the type of signals is defined as
+
+            .
+
+            > data Sig a = a ::: (O (Sig a))
+
+            .
+
+            So the current value of the signal is available now, but
+            its future state is only available in the next time
+            step. Writing a @map@ function for this type of streams,
+            requires us to use the @Box@ modality:
+
+            .
+
+            > map :: Box (a -> b) -> Sig a -> Sig b
+            > map f (x ::: xs) = unbox f x ::: delay (map f (adv xs))
+
+            .
+
+            This makes sure that the function @f@ that we give to
+            @map@ is available at any time in the future.
+
+            .
+
+            The core of the language is defined in the module
+            "AsyncRattus.Primitives". Note that the operations on @O@
+            and @Box@ have non-standard typing rules. Therefore, this
+            library provides a compiler plugin that checks these
+            non-standard typing rules. To write Async Rattus programs,
+            you must enable this plugin via the GHC option
+            @-fplugin=AsyncRattus.Plugin@, e.g. by including the following
+            line in the source file:
+            
+            .
+            
+            > {-# OPTIONS -fplugin=AsyncRattus.Plugin #-}
+            
+            .
+
+            In addition, you have to annotate functions that are
+            written in Async Rattus:
+
+            .
+            
+            > {-# ANN myFunction AsyncRattus #-}
+
+            .
+
+            You can also annotate the whole module as an Async Rattus module:
+            
+            .
+
+            > {-# ANN module AsyncRattus #-}
+
+            .
+
+            Below is a minimal Async Rattus program using the
+            "AsyncRattus.Signal" module for programming with signals:
+
+            .
+
+            > {-# OPTIONS -fplugin=AsyncRattus.Plugin #-}
+            >     
+            > import AsyncRattus
+            > import AsyncRattus.Signal
+            > 
+            > {-# ANN sums AsyncRattus #-}
+            > sums :: Sig Int -> Sig Int
+            > sums = scan (box (+)) 0
+
+            .
+
+            The <docs/src/AsyncRattus.Signal.html source code of the AsyncRattus.Signal module>
+            provides more examples on how to program in Async Rattus.
+            An example project using Async Rattus can be found
+            <https://github.com/pa-ba/AsyncRattus/tree/master/examples/console here>.
+
+homepage:            https://github.com/pa-ba/AsyncRattus/
+bug-reports:         https://github.com/pa-ba/AsyncRattus/issues
+License:             BSD3
+License-file:        LICENSE
+copyright:           Copyright (C) 2023 Emil Houlborg, Gregers Rørdam, Patrick Bahr
+Author:              Emil Houlborg, Gregers Rørdam, Patrick Bahr
+maintainer:          Patrick Bahr <paba@itu.dk>
+stability:           experimental
+
+build-type:          Custom
+
+extra-source-files:  CHANGELOG.md
+
+extra-doc-files:     docs/paper.pdf
+                     
+custom-setup
+  setup-depends:
+    base  >= 4.5 && < 5,
+    Cabal >= 1.18  && < 4
+
+
+library
+  exposed-modules:     AsyncRattus
+                       AsyncRattus.Signal
+                       AsyncRattus.Future
+                       AsyncRattus.Strict
+                       AsyncRattus.Plugin
+                       AsyncRattus.Primitives
+                       AsyncRattus.InternalPrimitives
+                       AsyncRattus.Channels
+                       AsyncRattus.Plugin.Annotation
+                                              
+  other-modules:       AsyncRattus.Plugin.ScopeCheck
+                       AsyncRattus.Plugin.SingleTick
+                       AsyncRattus.Plugin.CheckClockCompatibility
+                       AsyncRattus.Plugin.Strictify
+                       AsyncRattus.Plugin.Utils
+                       AsyncRattus.Plugin.Dependency
+                       AsyncRattus.Plugin.StableSolver
+                       AsyncRattus.Plugin.Transform
+                       AsyncRattus.Plugin.PrimExpr
+  build-depends:       base >=4.16 && <5,
+                       containers >= 0.6.5 && < 0.8,
+                       ghc >= 9.2 && < 9.7,
+                       hashtables >= 1.3.1 && < 1.4,
+                       simple-affine-space >= 0.2.1 && < 0.3,
+                       transformers >= 0.5.6 && < 0.7
+  hs-source-dirs:      src
+  default-language:    Haskell2010
+  ghc-options:         -W
+
+
+
+Test-Suite ill-typed
+  type:                exitcode-stdio-1.0
+  main-is:             test/IllTyped.hs
+  default-language:    Haskell2010
+  build-depends:       AsyncRattus, base
+  ghc-options:         -fplugin=AsyncRattus.Plugin
+
+
+Test-Suite well-typed
+  type:                exitcode-stdio-1.0
+  main-is:             WellTyped.hs
+  hs-source-dirs:      test
+  default-language:    Haskell2010
+  build-depends:       AsyncRattus, base, containers
+  ghc-options:         -fplugin=AsyncRattus.Plugin
+
revision 2
 cabal-version:       1.18
 name:                AsyncRattus
 version:             0.1
-x-revision: 1
+x-revision: 2
 category:            FRP
 synopsis:            An asynchronous modal FRP language
 description:
             
             What follows is a brief introduction to the language and
             its usage. A more detailed introduction can be found in
-            this <https://bahr.io/pubs/files/asyncrattus-paper.pdf>.
+            this <https://bahr.io/pubs/files/asyncrattus-paper.pdf paper>.
             
             .