name: copilot version: 0.23 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 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 > "fib" .= [0,1] ++ var "fib" + (drop 1 $ varW64 "fib") > "t" .= even (var "fib") > where even :: Spec Word64 -> Spec Bool > even w = w `mod` const 2 == const 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 build-depends: base > 4 && < 5 , atom >= 1.0.7 , containers >= 0.2.0.1 , process >= 1.0.0.0 , random >= 1.0.0.0 , directory , 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.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.Variables 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