Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
21 lines (21 loc) · 5.82 KB
/
Copy pathindex.html
File metadata and controls
21 lines (21 loc) · 5.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>copilot-1.0.2: A stream DSL for writing embedded C monitors.</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="http://github.com/leepike/Copilot">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">copilot-1.0.2: A stream DSL for writing embedded C monitors.</p></div><div id="content"><div id="description" class="doc"><h1>copilot-1.0.2: A stream DSL for writing embedded C monitors.</h1><p>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:
</p><pre> 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
</pre><p>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.
</p></div><div id="module-list"><p class="caption">Modules</p><ul><li><span id="control.n.1" class="module collapser" onclick="toggleSection('n.1')">Language</span><ul id="section.n.1" class="show"><li><span class="module"><span id="control.n.1.1" class="collapser" onclick="toggleSection('n.1.1')"> </span><a href="Language-Copilot.html">Language.Copilot</a></span><ul id="section.n.1.1" class="show"><li><span class="module"><a href="Language-Copilot-AdHocC.html">Language.Copilot.AdHocC</a></span></li><li><span class="module"><a href="Language-Copilot-Analyser.html">Language.Copilot.Analyser</a></span></li><li><span class="module"><a href="Language-Copilot-AtomToC.html">Language.Copilot.AtomToC</a></span></li><li><span class="module"><a href="Language-Copilot-Compiler.html">Language.Copilot.Compiler</a></span></li><li><span class="module"><a href="Language-Copilot-Core.html">Language.Copilot.Core</a></span></li><li><span class="module"><a href="Language-Copilot-Dispatch.html">Language.Copilot.Dispatch</a></span></li><li><span id="control.n.1.1.7" class="module collapser" onclick="toggleSection('n.1.1.7')">Examples</span><ul id="section.n.1.1.7" class="show"><li><span class="module"><a href="Language-Copilot-Examples-Examples.html">Language.Copilot.Examples.Examples</a></span></li><li><span class="module"><a href="Language-Copilot-Examples-LTLExamples.html">Language.Copilot.Examples.LTLExamples</a></span></li><li><span class="module"><a href="Language-Copilot-Examples-PTLTLExamples.html">Language.Copilot.Examples.PTLTLExamples</a></span></li><li><span class="module"><a href="Language-Copilot-Examples-StatExamples.html">Language.Copilot.Examples.StatExamples</a></span></li></ul></li><li><span class="module"><a href="Language-Copilot-Help.html">Language.Copilot.Help</a></span></li><li><span class="module"><a href="Language-Copilot-Interface.html">Language.Copilot.Interface</a></span></li><li><span class="module"><a href="Language-Copilot-Interpreter.html">Language.Copilot.Interpreter</a></span></li><li><span class="module"><span id="control.n.1.1.11" class="collapser" onclick="toggleSection('n.1.1.11')"> </span><a href="Language-Copilot-Language.html">Language.Copilot.Language</a></span><ul id="section.n.1.1.11" class="show"><li><span class="module"><a href="Language-Copilot-Language-Casting.html">Language.Copilot.Language.Casting</a></span></li><li><span class="module"><a href="Language-Copilot-Language-FunctionCalls.html">Language.Copilot.Language.FunctionCalls</a></span></li><li><span class="module"><a href="Language-Copilot-Language-RandomOps.html">Language.Copilot.Language.RandomOps</a></span></li><li><span class="module"><a href="Language-Copilot-Language-Sampling.html">Language.Copilot.Language.Sampling</a></span></li></ul></li><li><span id="control.n.1.1.12" class="module collapser" onclick="toggleSection('n.1.1.12')">Libs</span><ul id="section.n.1.1.12" class="show"><li><span class="module"><a href="Language-Copilot-Libs-ErrorChks.html">Language.Copilot.Libs.ErrorChks</a></span></li><li><span class="module"><a href="Language-Copilot-Libs-Indexes.html">Language.Copilot.Libs.Indexes</a></span></li><li><span class="module"><a href="Language-Copilot-Libs-LTL.html">Language.Copilot.Libs.LTL</a></span></li><li><span class="module"><a href="Language-Copilot-Libs-PTLTL.html">Language.Copilot.Libs.PTLTL</a></span></li><li><span class="module"><a href="Language-Copilot-Libs-Statistics.html">Language.Copilot.Libs.Statistics</a></span></li><li><span class="module"><a href="Language-Copilot-Libs-Vote.html">Language.Copilot.Libs.Vote</a></span></li></ul></li><li><span class="module"><a href="Language-Copilot-PrettyPrinter.html">Language.Copilot.PrettyPrinter</a></span></li><li><span id="control.n.1.1.14" class="module collapser" onclick="toggleSection('n.1.1.14')">Tests</span><ul id="section.n.1.1.14" class="show"><li><span class="module"><a href="Language-Copilot-Tests-Random.html">Language.Copilot.Tests.Random</a></span></li></ul></li></ul></li></ul></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.9.2</p></div></body></html>