@@ -0,0 +1,42 @@
1+module Main
2+
3+em : Buffer 0
4+em = allocate 32
5+
6+one : Bits32
7+one = 1
8+
9+two : Bits8
10+two = 2
11+
12+firstHalf : Buffer 32
13+firstHalf = appendLE em 1 one
14+
15+full : Buffer 64
16+full = appendLE firstHalf 4 two
17+
18+firstByte : Bits8
19+firstByte = peekLE full 0
20+
21+firstHalfView : Buffer 32
22+firstHalfView = peekLE full 0
23+
24+firstHalfCopy : Buffer 32
25+firstHalfCopy = copy firstHalfView
26+
27+oneFromFirstHalf : Bits32
28+oneFromFirstHalf = peekLE firstHalf 0
29+
30+oneFromFirstHalfCopy = peekLE firstHalfCopy 0
31+
32+viewsAndCopiesPreserveEquality : Bool
33+viewsAndCopiesPreserveEquality = (oneFromFirstHalf == one) && (oneFromFirstHalfCopy == one)
34+
35+secondHalfWord : Bits32
36+secondHalfWord = peekLE full 1
37+
38+main : IO ()
39+main = do
40+ putStrLn $ show firstByte
41+ putStrLn $ show viewsAndCopiesPreserveEquality
42+ putStrLn $ show secondHalfWord