File: cast_pair_effectful.sail

package info (click to toggle)
sail-ocaml 0.19.1%2Bdfsg5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,008 kB
  • sloc: ml: 75,941; ansic: 8,848; python: 1,342; exp: 560; sh: 474; makefile: 218; cpp: 36
file content (22 lines) | stat: -rw-r--r-- 369 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
default Order dec
$include <prelude.sail>

val f1 : bool -> (bits(3), bits(8))
function f1(b) = {
  assert(b);
  (0b000, 0x12)
}
val f2 : bool -> (bits(3), bits(16))
function f2(b) = {
  assert(b);
  (0b000, 0x1234)
}

val g : forall 'n, 'n in {8,16}. bits('n) -> (bits(3), bits('n))

function g(v) = {
  match 'n {
  8 => f1(v == 0x00),
  16 => f2(v == 0x0000),
  }
}