name: copilot version: 1.0 cabal-version: >= 1.2 license: BSD3 license-file: LICENSE author: Lee Pike, Robin Morisset, Alwyn Goodloe, Sebastian Niller synopsis: A stream DSL for writing embedded C monitors. build-type: Simple maintainer: Lee Pike category: Language, Embedded homepage: http://leepike.github.com/Copilot/ description: Can you write a list in Haskell? Then you can write embedded C code using Copilot. Here's a Copilot program that computes the Fibonacci sequence (over Word 64s) and tests for even numbers: . > fib :: Streams > fib = do > let f = varW64 "fib" > let t = varB "t" > f .= [0,1] ++ f + (drop 1 f) > t .= even f > where even :: Spec Word64 -> Spec Bool > even w' = w' `mod` 2 == 0 . Copilot contains an interpreter, a compiler, and uses a model-checker to check the correctness of your program. The compiler generates constant time and constant space C code via Tom Hawkin's Atom (thanks Tom!). Copilot was originally developed to write embedded monitors for more complex embedded systems, but it can be used to develop a variety of functional-style embedded code. extra-source-files: README library ghc-options: -Wall -- These build depends represent my current system. This will probably -- build on packages outside these constaints. build-depends: base >= 4.2 && < 6 , atom >= 1.0.8 , containers >= 0.2.0.1 , process >= 1.0.0.0 , random >= 1.0.0.0 , directory >= 1.0.0.0 , mtl >= 1.0.0.0 , filepath >= 1.0.0.0 extensions: exposed-modules: Language.Copilot Language.Copilot.AdHocC Language.Copilot.Core Language.Copilot.Language Language.Copilot.Language.Sampling Language.Copilot.Language.FunctionCalls Language.Copilot.Language.RandomOps Language.Copilot.Language.Casting Language.Copilot.AtomToC Language.Copilot.Compiler Language.Copilot.Interpreter Language.Copilot.Help Language.Copilot.Analyser Language.Copilot.PrettyPrinter Language.Copilot.Tests.Random Language.Copilot.Dispatch Language.Copilot.Interface Language.Copilot.Libs.ErrorChks Language.Copilot.Libs.PTLTL Language.Copilot.Libs.LTL Language.Copilot.Libs.Indexes Language.Copilot.Libs.Statistics Language.Copilot.Examples.Examples Language.Copilot.Examples.LTLExamples Language.Copilot.Examples.PTLTLExamples Language.Copilot.Examples.StatExamples