### Yampa Installation Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md Instructions for installing Yampa with example support using Cabal, enabling the use of SDL and Wii Remote examples. ```Shell $ cabal update $ cabal install Yampa -fexamples ``` -------------------------------- ### Yampa Installation Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Instructions for installing the Yampa library with its examples using Cabal. ```Shell $ cabal update $ cabal install Yampa -fexamples ``` -------------------------------- ### Cabal File Style Guide Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md Details the recommended style guide for Cabal files used in the Yampa project. This ensures consistency in project configuration and metadata. ```Cabal https://keera.co.uk/wp-content/uploads/2021/11/cabalguide-v1.3.0.pdf ``` -------------------------------- ### Cabal File Style Guide Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Details the recommended style guide for Cabal files used in the Yampa project. This ensures consistency in project configuration and metadata. ```Cabal https://keera.co.uk/wp-content/uploads/2021/11/cabalguide-v1.3.0.pdf ``` -------------------------------- ### Install Yampa using Cabal Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md Installs the Yampa library using the Cabal build tool. This command updates the package list and then installs the Yampa library, making it available for Haskell projects. ```sh $ cabal update $ cabal install --lib Yampa ``` -------------------------------- ### Haskell Simulation Setup Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Provides the necessary IO actions to run a Yampa signal function simulation, including initial sample, subsequent samples, and output handling. ```Haskell firstSample :: IO Double -- sample at time zero firstSample = return 1.0 -- time == 0, input == 1.0 nextSamples :: Bool -> IO (Double, Maybe Double) -- time delta == 0.1s, input == 1.0 nextSamples _ = return (0.1, Just 1.0) output :: Bool -> Double -> IO Bool output _ x = do print x -- print the output return False -- just continue forever ``` -------------------------------- ### Reactimate Execution Setup Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md Provides the necessary IO actions to run a Yampa signal function using reactimate, including initial sample, subsequent samples, and output handling. ```Haskell firstSample :: IO Double -- sample at time zero firstSample = return 1.0 -- time == 0, input == 1.0 nextSamples :: Bool -> IO (Double, Maybe Double) nextSamples _ = return (0.1, Just 1.0) -- time delta == 0.1s, input == 1.0 output :: Bool -> Double -> IO Bool output _ x = do print x -- print the output return False -- just continue forever ``` -------------------------------- ### Install Yampa using Cabal Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Installs the Yampa library using the Cabal build tool. This command updates the package list and then installs the Yampa library, making it available for Haskell projects. ```sh $ cabal update $ cabal install --lib Yampa ``` -------------------------------- ### Verify Yampa Installation Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md Verifies a successful Yampa installation by compiling and running a simple Haskell program that imports the Yampa library and prints 'Success'. This confirms that the library is accessible and functional. ```haskell $ runhaskell <<< 'import FRP.Yampa; main = putStrLn "Success"' ``` -------------------------------- ### Install Haskell Toolchain on macOS Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md Installs the necessary Haskell compiler (GHC) and the Cabal build tool on macOS using the Homebrew package manager. ```sh $ brew install ghc cabal-install ``` -------------------------------- ### Haskell Coding Style Guide Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md Specifies the recommended coding style for Haskell files within the Yampa project. Adherence to this guide ensures code consistency and readability. ```Haskell https://keera.co.uk/wp-content/uploads/2021/11/haskellguide-v1.3.0.pdf ``` -------------------------------- ### Verify Yampa Installation Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Verifies a successful Yampa installation by compiling and running a simple Haskell program that imports the Yampa library and prints 'Success'. This confirms that the library is accessible and functional. ```haskell $ runhaskell <<< 'import FRP.Yampa; main = putStrLn "Success"' ``` -------------------------------- ### Install Haskell Toolchain on macOS Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Installs the necessary Haskell compiler (GHC) and the Cabal build tool on macOS using the Homebrew package manager. ```sh $ brew install ghc cabal-install ``` -------------------------------- ### Install Haskell Toolchain on Debian/Ubuntu Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md Installs the necessary Haskell compiler (GHC) and the Cabal build tool on Debian or Ubuntu-based Linux distributions using the apt-get package manager. ```sh $ apt-get install ghc cabal-install ``` -------------------------------- ### Haskell Coding Style Guide Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Specifies the recommended coding style for Haskell files within the Yampa project. Adherence to this guide ensures code consistency and readability. ```Haskell https://keera.co.uk/wp-content/uploads/2021/11/haskellguide-v1.3.0.pdf ``` -------------------------------- ### Install Haskell Toolchain on Debian/Ubuntu Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Installs the necessary Haskell compiler (GHC) and the Cabal build tool on Debian or Ubuntu-based Linux distributions using the apt-get package manager. ```sh $ apt-get install ghc cabal-install ``` -------------------------------- ### Git Branching Model and Commit Conventions Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md Outlines the version control strategy using Git Flow, including conventions for commit messages, referencing issues, and handling multiple changes. It emphasizes clear documentation and adherence to the style guide. ```Git http://nvie.com/posts/a-successful-git-branching-model/ Commit conventions: - Document commits clearly and separately. - Refer to issues with `Refs #`. - Open an issue first if no issue exists for a change. - Do not address more than one issue per commit or PR. - Document changes in CHANGELOGs in a separate commit before PR. - Prefix summary line with `: ` for package-specific commits. - Ensure changes conform to the coding style. ``` -------------------------------- ### Git Branching Model and Commit Conventions Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Outlines the version control strategy using Git Flow, including conventions for commit messages, referencing issues, and handling multiple changes. It emphasizes clear documentation and adherence to the style guide. ```Git http://nvie.com/posts/a-successful-git-branching-model/ Commit conventions: - Document commits clearly and separately. - Refer to issues with `Refs #`. - Open an issue first if no issue exists for a change. - Do not address more than one issue per commit or PR. - Document changes in CHANGELOGs in a separate commit before PR. - Prefix summary line with `: ` for package-specific commits. - Ensure changes conform to the coding style. ``` -------------------------------- ### Related Resources Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md Links to supplementary materials and related publications that provide further context and information about Yampa and Functional Reactive Programming. This includes diagrams, maintainer's publication lists, and a PhD report. ```en Collection of Yampa diagrams https://github.com/ivanperez-keera/Yampa/tree/develop/doc/diagrams/Diagrams.md Henrik Nilsson's publications http://www.cs.nott.ac.uk/~psznhn/papers.html Ivan Perez's publications https://ivanperez.io First Year PhD Report (Ivan Perez, 2014), chapter 3 includes a review of FRP and outlines some existing issues. http://www.cs.nott.ac.uk/~psxip1/papers/2014-Perez-1st-year-report.pdf ``` -------------------------------- ### Related Resources Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Links to supplementary materials and related publications that provide further context and information about Yampa and Functional Reactive Programming. This includes diagrams, maintainer's publication lists, and a PhD report. ```en Collection of Yampa diagrams https://github.com/ivanperez-keera/Yampa/tree/develop/doc/diagrams/Diagrams.md Henrik Nilsson's publications http://www.cs.nott.ac.uk/~psznhn/papers.html Ivan Perez's publications https://ivanperez.io First Year PhD Report (Ivan Perez, 2014), chapter 3 includes a review of FRP and outlines some existing issues. http://www.cs.nott.ac.uk/~psxip1/papers/2014-Perez-1st-year-report.pdf ``` -------------------------------- ### Yampa API Documentation Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md Comprehensive API documentation for Yampa, detailing its functions, types, and usage. This includes information on signal functions, event handling, and integration with various backends. ```APIDOC Yampa API Documentation: Signal Functions (SF): SF a b Represents a function from input of type 'a' to output of type 'b' over time. Core component of Yampa for defining reactive behavior. Basic SF Combinators: pure :: a -> SF s a Creates an SF that always produces a constant output. (<*>) :: SF s (a -> b) -> SF s a -> SF s b Applies a function output by one SF to the input of another SF. arr :: (a -> b) -> SF s b Converts a pure function into an SF. >>> :: SF s a -> SF s b -> SF s (a, b) Combines two SFs, taking inputs from both and producing a pair of outputs. Event Handling: never :: SF s a An SF that never produces an output. now :: a -> SF s a An SF that produces an output once. after :: Double -> a -> SF s a An SF that produces an output after a specified delay. edge :: (a -> Bool) -> SF s a -> SF s a Produces an output only when the predicate transitions from False to True. Integration with Backends: (Specific backend integration details would be listed here, e.g., SDL, OpenGL, GLFW, HTML Canvas, Gloss) Example for Gloss: play :: Display -> Color -> Int -> World -> (World -> Picture) -> (Event -> World -> World) -> World -> IO () Initializes and runs a Gloss window with Yampa integration. Parameters: Display: Window display settings. Color: Background color. Int: Number of simulation steps per second. World: Initial game state. (World -> Picture): Function to render the game state. (Event -> World -> World): Function to handle user input and update the game state. World: The final game state. Returns: IO () Testing and Debugging: (Details on QuickCheck integration and time-travel debugging would be listed here) Example for QuickCheck: quickCheck :: Testable prop => prop -> IO () Runs QuickCheck tests on Yampa signal functions. Requires properties defined using QuickCheck's interface. ``` -------------------------------- ### Yampa API Documentation Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Comprehensive API documentation for Yampa, detailing its functions, types, and usage. This includes information on signal functions, event handling, and integration with various backends. ```APIDOC Yampa API Documentation: Signal Functions (SF): SF a b Represents a function from input of type 'a' to output of type 'b' over time. Core component of Yampa for defining reactive behavior. Basic SF Combinators: pure :: a -> SF s a Creates an SF that always produces a constant output. (<*>) :: SF s (a -> b) -> SF s a -> SF s b Applies a function output by one SF to the input of another SF. arr :: (a -> b) -> SF s b Converts a pure function into an SF. >>> :: SF s a -> SF s b -> SF s (a, b) Combines two SFs, taking inputs from both and producing a pair of outputs. Event Handling: never :: SF s a An SF that never produces an output. now :: a -> SF s a An SF that produces an output once. after :: Double -> a -> SF s a An SF that produces an output after a specified delay. edge :: (a -> Bool) -> SF s a -> SF s a Produces an output only when the predicate transitions from False to True. Integration with Backends: (Specific backend integration details would be listed here, e.g., SDL, OpenGL, GLFW, HTML Canvas, Gloss) Example for Gloss: play :: Display -> Color -> Int -> World -> (World -> Picture) -> (Event -> World -> World) -> World -> IO () Initializes and runs a Gloss window with Yampa integration. Parameters: Display: Window display settings. Color: Background color. Int: Number of simulation steps per second. World: Initial game state. (World -> Picture): Function to render the game state. (Event -> World -> World): Function to handle user input and update the game state. World: The final game state. Returns: IO () Testing and Debugging: (Details on QuickCheck integration and time-travel debugging would be listed here) Example for QuickCheck: quickCheck :: Testable prop => prop -> IO () Runs QuickCheck tests on Yampa signal functions. Requires properties defined using QuickCheck's interface. ``` -------------------------------- ### Support the Maintainer Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md Information on how to support the maintainer of the Yampa project by buying them a cup of coffee. ```en Buy the maintainer a cup of coffee https://flattr.com/submit/auto?user_id=ivanperez-keera&url=https://github.com/ivanperez-keera/Yampa&title=Yampa&language=&tags=github&category=software ``` -------------------------------- ### Support the Maintainer Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Information on how to support the maintainer of the Yampa project by buying them a cup of coffee. ```en Buy the maintainer a cup of coffee https://flattr.com/submit/auto?user_id=ivanperez-keera&url=https://github.com/ivanperez-keera/Yampa&title=Yampa&language=&tags=github&category=software ``` -------------------------------- ### Signal Function (Applicative Style) Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md An alternative implementation of the signal function using applicative style, demonstrating compatibility with different Yampa programming paradigms. ```Haskell -- Applicative style signalFunction1 :: SF Double Double signalFunction1 = (/) <$> integral <*> time ``` -------------------------------- ### Yampa Versioning Model Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md Explains the versioning format `..(.)?` used for Yampa packages. It defines the meaning of each component: PUB for milestones, MAJOR for incompatible API changes, MINOR for backwards-compatible changes, and PATCH for minor non-behavioral changes. ```APIDOC Versioning Model: Format: ..(.)? Components: - PUB: Signals important milestones or promotional reasons. - MAJOR: Increases on incompatible API changes. - MINOR: Increases on backwards-compatible changes. - PATCH: (Optional) Increases on small changes that do not affect behavior (e.g., documentation). ``` -------------------------------- ### Keera Studios Games using Yampa Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md This entry details games developed by Keera Studios that utilize the Yampa library. It includes links to the games, their availability on Google Play and the App Store, and relevant copyright information. The content is presented in a table format, with each game occupying a column. ```Haskell Project: /ivanperez-keera/yampa Content: ## Use in industry [(Back to top)](#table-of-contents) [Keera Studios](https://keera.co.uk) uses Yampa to create Haskell games available on [Google Play for Android](https://play.google.com/store/apps/developer?id=Keera+Studios&hl=en_US&gl=US) and [iTunes for iOS](https://apps.apple.com/us/developer/keera-studios-ltd/id1244709870):

Magic Cookies!

Magic Cookies! Video
Copyright © 2015 - 2020 Keera Studios Ltd. All Rights Reserved.
  

Magic Cookies 2!

Magic Cookies 2! Video
Copyright © 2015 - 2022 Keera Studios Ltd. All Rights Reserved.
  

Enpuzzled

Enpuzzled Video
Copyright © - 2017 - Keera Studios Ltd - All Rights Reserved.
  

Keera, Keera Studios, Magic Cookies, Magic Cookies 2, the Magic Cookies logo, the Magic Cookies 2 logo, the Magic Cookies splash screen, the Magic Cookies 2 splash screen, Enpuzzled, the Enpuzzled splash screen, and the Enpuzzled logo are trademarks of Keera Studios Ltd. Google Play and the Google Play logo are trademarks of Google LLC. Apple, the Apple logo, iPhone, and iPad are trademarks of Apple Inc., registered in the U.S. and other countries and regions. App Store is a service mark of Apple Inc.
``` -------------------------------- ### Basic Signal Function (Arrow Syntax) Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md Defines a signal function that integrates the input and divides by time, using Haskell's Arrows syntax. Requires the Arrows language extension. ```Haskell #!/usr/bin/env runhaskell {-# LANGUAGE Arrows #-} import FRP.Yampa signalFunction :: SF Double Double signalFunction = proc x -> do y <- integral -< x t <- time -< () returnA -< y / t ``` -------------------------------- ### Yampa Publications Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md A collection of academic publications related to the Yampa project, detailing research in Functional Reactive Programming (FRP), robotic art, molecular programming, and animation. These papers explore theoretical foundations, practical implementations, and applications of FRP. ```en Using Functional Reactive Programming for Robotic Art: An Experience Report (Eliane I. Schmidli and Farhad Mehta; 2024) https://dl.acm.org/doi/10.1145/3677996.3678288 Demo: The Fun of Robotic Artwork (Eliane I. Schmidli and Farhad Mehta; 2024) https://dl.acm.org/doi/10.1145/3677996.3678286 Reactamole: functional reactive molecular programming (Titus Klinge, James Lathrop, Peter-Michael Osera, Allison Rogers; 2024) https://doi.org/10.1007/s11047-024-09982-5 The Beauty and Elegance of Functional Reactive Animation (Ivan Perez; 2023) https://dl.acm.org/doi/10.1145/3609023.3609806?cid=99658741366 Extensible and Robust Functional Reactive Programming (Ivan Perez; 2017) http://www.cs.nott.ac.uk/~psxip1/papers/2017-Perez-thesis-latest.pdf Testing and Debugging Functional Reactive Programming (Ivan Perez and Henrik Nilsson; 2017) http://dl.acm.org/authorize?N46564 Functional Reactive Programming, Refactored (Ivan Perez, Manuel Bärenz, and Henrik Nilsson; 2016) http://dl.acm.org/authorize?N34896 Safe Functional Reactive Programming through Dependent Types (Neil Sculthorpe and Henrik Nilsson; 2009) http://dl.acm.org/authorize?N08595 Push-Pull Functional Reactive Programming (Conal Elliott; 2009) http://conal.net/papers/push-pull-frp/push-pull-frp.pdf Switched-on Yampa: Declarative Programming of Modular Synthesizers (George Giorgidze and Henrik Nilsson; 2008) http://www.cs.nott.ac.uk/~psznhn/Publications/padl2008.pdf Demo-outline: Switched-on Yampa: Programming Modular Synthesizers in Haskell (George Giorgidze and Henrik Nilsson; 2007) http://dl.acm.org/authorize?N08596 Dynamic Optimization for Functional Reactive Programming using Generalized Algebraic Data Types (Henrik Nilsson; 2005) http://dl.acm.org/authorize?N08598 The Yampa Arcade (Antony Courtney, Henrik Nilsson, and John Peterson; 2003) http://dl.acm.org/authorize?N08599 Arrows, Robots, and Functional Reactive Programming (Paul Hudak, Antony Courtney, Henrik Nilsson, and John Peterson; 2002) http://www.cs.nott.ac.uk/~psznhn/Publications/afp2002.pdf Functional Reactive Programming, Continued (Henrik Nilsson, Antony Courtney, and John Peterson; 2002) http://dl.acm.org/authorize?N08592 Genuinely Functional User Interfaces (Antony Courtney and Conal Elliott; 2001) http://conal.net/papers/genuinely-functional-guis.pdf ``` -------------------------------- ### Yampa Versioning Model Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Explains the versioning format `..(.)?` used for Yampa packages. It defines the meaning of each component: PUB for milestones, MAJOR for incompatible API changes, MINOR for backwards-compatible changes, and PATCH for minor non-behavioral changes. ```APIDOC Versioning Model: Format: ..(.)? Components: - PUB: Signals important milestones or promotional reasons. - MAJOR: Increases on incompatible API changes. - MINOR: Increases on backwards-compatible changes. - PATCH: (Optional) Increases on small changes that do not affect behavior (e.g., documentation). ``` -------------------------------- ### Keera Studios Games using Yampa Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md This entry details games developed by Keera Studios that utilize the Yampa library. It includes links to the games, their availability on Google Play and the App Store, and relevant copyright information. The content is presented in a table format, with each game occupying a column. ```Haskell Project: /ivanperez-keera/yampa Content: ## Use in industry [(Back to top)](#table-of-contents) [Keera Studios](https://keera.co.uk) uses Yampa to create Haskell games available on [Google Play for Android](https://play.google.com/store/apps/developer?id=Keera+Studios&hl=en_US&gl=US) and [iTunes for iOS](https://apps.apple.com/us/developer/keera-studios-ltd/id1244709870):

Magic Cookies!

Magic Cookies! Video
Copyright © 2015 - 2020 Keera Studios Ltd. All Rights Reserved.
  

Magic Cookies 2!

Magic Cookies 2! Video
Copyright © 2015 - 2022 Keera Studios Ltd. All Rights Reserved.
  

Enpuzzled

Enpuzzled Video
Copyright © - 2017 - Keera Studios Ltd - All Rights Reserved.
  

Keera, Keera Studios, Magic Cookies, Magic Cookies 2, the Magic Cookies logo, the Magic Cookies 2 logo, the Magic Cookies splash screen, the Magic Cookies 2 splash screen, Enpuzzled, the Enpuzzled splash screen, and the Enpuzzled logo are trademarks of Keera Studios Ltd. Google Play and the Google Play logo are trademarks of Google LLC. Apple, the Apple logo, iPhone, and iPad are trademarks of Apple Inc., registered in the U.S. and other countries and regions. App Store is a service mark of Apple Inc.
``` -------------------------------- ### Yampa Publications Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md A collection of academic publications related to the Yampa project, detailing research in Functional Reactive Programming (FRP), robotic art, molecular programming, and animation. These papers explore theoretical foundations, practical implementations, and applications of FRP. ```en Using Functional Reactive Programming for Robotic Art: An Experience Report (Eliane I. Schmidli and Farhad Mehta; 2024) https://dl.acm.org/doi/10.1145/3677996.3678288 Demo: The Fun of Robotic Artwork (Eliane I. Schmidli and Farhad Mehta; 2024) https://dl.acm.org/doi/10.1145/3677996.3678286 Reactamole: functional reactive molecular programming (Titus Klinge, James Lathrop, Peter-Michael Osera, Allison Rogers; 2024) https://doi.org/10.1007/s11047-024-09982-5 The Beauty and Elegance of Functional Reactive Animation (Ivan Perez; 2023) https://dl.acm.org/doi/10.1145/3609023.3609806?cid=99658741366 Extensible and Robust Functional Reactive Programming (Ivan Perez; 2017) http://www.cs.nott.ac.uk/~psxip1/papers/2017-Perez-thesis-latest.pdf Testing and Debugging Functional Reactive Programming (Ivan Perez and Henrik Nilsson; 2017) http://dl.acm.org/authorize?N46564 Functional Reactive Programming, Refactored (Ivan Perez, Manuel Bärenz, and Henrik Nilsson; 2016) http://dl.acm.org/authorize?N34896 Safe Functional Reactive Programming through Dependent Types (Neil Sculthorpe and Henrik Nilsson; 2009) http://dl.acm.org/authorize?N08595 Push-Pull Functional Reactive Programming (Conal Elliott; 2009) http://conal.net/papers/push-pull-frp/push-pull-frp.pdf Switched-on Yampa: Declarative Programming of Modular Synthesizers (George Giorgidze and Henrik Nilsson; 2008) http://www.cs.nott.ac.uk/~psznhn/Publications/padl2008.pdf Demo-outline: Switched-on Yampa: Programming Modular Synthesizers in Haskell (George Giorgidze and Henrik Nilsson; 2007) http://dl.acm.org/authorize?N08596 Dynamic Optimization for Functional Reactive Programming using Generalized Algebraic Data Types (Henrik Nilsson; 2005) http://dl.acm.org/authorize?N08598 The Yampa Arcade (Antony Courtney, Henrik Nilsson, and John Peterson; 2003) http://dl.acm.org/authorize?N08599 Arrows, Robots, and Functional Reactive Programming (Paul Hudak, Antony Courtney, Henrik Nilsson, and John Peterson; 2002) http://www.cs.nott.ac.uk/~psznhn/Publications/afp2002.pdf Functional Reactive Programming, Continued (Henrik Nilsson, Antony Courtney, and John Peterson; 2002) http://dl.acm.org/authorize?N08592 Genuinely Functional User Interfaces (Antony Courtney and Conal Elliott; 2001) http://conal.net/papers/genuinely-functional-guis.pdf ``` -------------------------------- ### Haskell Signal Function (Applicative Style) Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Defines a signal function that integrates an input and divides by time using Haskell's Applicative style. ```Haskell -- Applicative style signalFunction1 :: SF Double Double signalFunction1 = (/) <$> integral <*> time ``` -------------------------------- ### Haskell Signal Function (Arrow Syntax) Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Defines a signal function that integrates an input and divides by time using Haskell's Arrow syntax. Requires the Arrows language extension. ```Haskell {-# LANGUAGE Arrows #-} import FRP.Yampa signalFunction :: SF Double Double signalFunction = proc x -> do y <- integral -< x t <- time -< () returnA -< y / t ``` -------------------------------- ### Haskell Games and Applications using Yampa Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md This section lists various games and applications built with the Yampa library. It includes titles like cuboid, Frag, hamball, Haskanoid, Haskelloids, LaneWars, MandelbrotYampa, Pang-a-lambda, Peoplemon, Spaceinvaders, The Bearriver Arcade, Yampa-2048, Yampa - Game of Life, YampaShooter, YampaSynth, and YFrob. Links to Hackage or GitHub repositories are provided for each project. ```Haskell cuboid: 3D puzzle game with GLUT. Frag: a 3D first person shooting game. hamball: 3D, LAN FPS game of hamster balls flying around and shooting lasers written in Haskell. Haskanoid: a game that uses SDL multimedia, wiimote and kinect. It's cross platform and works in desktop, mobile, and web (compiled with GHCJS). Haskelloids: a reproduction of the Atari 1979 classic "Asteroids" LaneWars: Top-down MOBA game with online multiplayer. MandelbrotYampa: a "hello world" using SDL2, Yampa and OpenGL. Pang-a-lambda: 2D arcade game inspired by the classic super-pang. Peoplemon: a role playing game. Spaceinvaders: Re-write of the classic space invaders. The Bearriver Arcade: A couple of arcade games made using bearriver, a library that implements the Yampa API. Yampa-2048: an implementation of the game 2048 using Yampa and Gloss. Yampa - Game of Life: an implementation of Game of Life using SDL2 and OpenGL. YampaShooter: Top-down team based networked tank game. YampaSynth: Software synthesizer. YFrob: Yampa-based library for programming robots. ``` -------------------------------- ### Haskell Games and Applications using Yampa Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md This section lists various games and applications built with the Yampa library. It includes titles like cuboid, Frag, hamball, Haskanoid, Haskelloids, LaneWars, MandelbrotYampa, Pang-a-lambda, Peoplemon, Spaceinvaders, The Bearriver Arcade, Yampa-2048, Yampa - Game of Life, YampaShooter, YampaSynth, and YFrob. Links to Hackage or GitHub repositories are provided for each project. ```Haskell cuboid: 3D puzzle game with GLUT. Frag: a 3D first person shooting game. hamball: 3D, LAN FPS game of hamster balls flying around and shooting lasers written in Haskell. Haskanoid: a game that uses SDL multimedia, wiimote and kinect. It's cross platform and works in desktop, mobile, and web (compiled with GHCJS). Haskelloids: a reproduction of the Atari 1979 classic "Asteroids" LaneWars: Top-down MOBA game with online multiplayer. MandelbrotYampa: a "hello world" using SDL2, Yampa and OpenGL. Pang-a-lambda: 2D arcade game inspired by the classic super-pang. Peoplemon: a role playing game. Spaceinvaders: Re-write of the classic space invaders. The Bearriver Arcade: A couple of arcade games made using bearriver, a library that implements the Yampa API. Yampa-2048: an implementation of the game 2048 using Yampa and Gloss. Yampa - Game of Life: an implementation of Game of Life using SDL2 and OpenGL. YampaShooter: Top-down team based networked tank game. YampaSynth: Software synthesizer. YFrob: Yampa-based library for programming robots. ``` -------------------------------- ### Haskell Signal Function (Arrow Combinators) Source: https://github.com/ivanperez-keera/yampa/blob/develop/README.md Defines a signal function that integrates an input and divides by time using Haskell's arrow combinators. ```Haskell -- Functional style with arrow combinators signalFunction2 :: SF Double Double signalFunction2 = (integral &&& time) >>^ (/) ``` -------------------------------- ### Signal Function (Arrow Combinators) Source: https://github.com/ivanperez-keera/yampa/blob/develop/yampa/README.md A signal function implemented using arrow combinators, offering a more functional approach to defining signal transformations. ```Haskell -- Functional style with arrow combinators signalFunction2 :: SF Double Double signalFunction2 = (integral &&& time) >>^ (/) ``` -------------------------------- ### Yampa Switch Functions (SVG) Source: https://github.com/ivanperez-keera/yampa/blob/develop/doc/diagrams/Diagrams.md Documentation for various Yampa switch functions such as kSwitch, pSwitchB, pSwitch, rpSwitchB, rpSwitch, rSwitch, and switch. These functions are often visualized using SVG diagrams. ```SVG kSwitch pSwitchB pSwitch rpSwitchB rpSwitch rSwitch switch ``` -------------------------------- ### Yampa Combinator Functions (DIA) Source: https://github.com/ivanperez-keera/yampa/blob/develop/doc/diagrams/Diagrams.md Documentation for Yampa combinator functions including arr, compose ((>>>)), loop, and parfanout (&&&). These functions are typically represented in DIA format for diagrammatic purposes. ```dia arr (>>>) loop (&&&) ``` -------------------------------- ### Yampa Reactimate Diagrams (SVG) Source: https://github.com/ivanperez-keera/yampa/blob/develop/doc/diagrams/Diagrams.md Visualizations of Yampa's reactimate functionality, including activity and dataflow diagrams. These SVG diagrams help in understanding how reactimate manages and visualizes signal processing activities and data flow. ```SVG Reactimate Activity Reactimate Dataflow ``` -------------------------------- ### Yampa Basic Signal Functions (SVG) Source: https://github.com/ivanperez-keera/yampa/blob/develop/doc/diagrams/Diagrams.md Diagram representing the basic signal functions within the Yampa framework, presented in SVG format. This provides a foundational overview of Yampa's signal processing capabilities. ```SVG Basic Signal Functions ``` -------------------------------- ### Yampa Signal Function Network (SVG) Source: https://github.com/ivanperez-keera/yampa/blob/develop/doc/diagrams/Diagrams.md Diagram illustrating the network of signal functions in Yampa, provided in SVG format. This visualization helps understand the interconnectedness of signal processing. ```SVG Signal Function network ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.