File: flat-array.4.sml

package info (click to toggle)
mlton 20210117%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 58,464 kB
  • sloc: ansic: 27,682; sh: 4,455; asm: 3,569; lisp: 2,879; makefile: 2,347; perl: 1,169; python: 191; pascal: 68; javascript: 7
file content (28 lines) | stat: -rw-r--r-- 991 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
23
24
25
26
27
28
structure Main =
   struct
      fun doit n =
         let
            val v = Vector.tabulate (1000000, fn i =>
                                     (Word14.fromInt i,
                                      Word10.fromInt (i + 1),
                                      Word8.fromInt (i + 2)))
            fun loop n =
               if 0 = n
                  then ()
               else
                  let
                     val sum = Vector.foldl (fn ((a, b, c), d) =>
                                             Word14.toLarge a +
                                             Word10.toLarge b +
                                             Word8.toLarge c + d) 0wx0 v
                     val _ = if 0wx20E0F3760 <> sum
                                then raise Fail (LargeWord.toString sum)
                                else ()
                  in
                     loop (n - 1)
                  end
         in
            loop n
         end
   end
val _ = Main.doit 10