copilot-0.22: A stream DSL for writing embedded C.Source codeContentsIndex
copilot-0.22: A stream DSL for writing embedded C.

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.

Modules
show/hideLanguage
show/hideLanguage.Copilot
Language.Copilot.AdHocC
Language.Copilot.Analyser
Language.Copilot.AtomToC
Language.Copilot.Compiler
Language.Copilot.Core
Language.Copilot.Dispatch
show/hideExamples
Language.Copilot.Examples.Examples
Language.Copilot.Examples.LTLExamples
Language.Copilot.Examples.PTLTLExamples
Language.Copilot.Examples.StatExamples
Language.Copilot.Help
Language.Copilot.Interface
Language.Copilot.Interpreter
Language.Copilot.Language
show/hideLibs
Language.Copilot.Libs.ErrorChks
Language.Copilot.Libs.Indexes
Language.Copilot.Libs.LTL
Language.Copilot.Libs.PTLTL
Language.Copilot.Libs.Statistics
Language.Copilot.PrettyPrinter
show/hideTests
Language.Copilot.Tests.Random
Language.Copilot.Variables
Produced by Haddock version 2.6.1