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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
module Fast2haskell (
Complex_type, Array_type, Assoc_type, Descr_type,
abortstr, delay, fix, force, iff, iffrev, seQ,
pair, strcmp,
entier,
land_i, lnot_i, lor_i, lshift_i, rshift_i,
descr,
destr_update, indassoc, lowbound, tabulate, upbound, update, valassoc) where {
import Data.Bits;
-- import Word2;
import Data.Word;
import Data.Complex; -- 1.3
import Data.Array; -- 1.3
-- import Data.Int ( Num(fromInt) );
type Complex_type = Complex Double;
type Array_type b = Array Int b;
type Assoc_type a = (Int, a);
type Descr_type = (Int,Int);
abortstr str = error ("abort:"++str); -- abort (OtherError str);
delay x = abortstr "delay not implemented";
fix f = fix_f where {fix_f = f fix_f};
force x = x; -- error "force not implemented";
iff b x y = if b then x else y;
iffrev y x b = if b then x else y;
seQ x y = x `seq` y;
pair [] = False;
pair x = True;
strcmp :: [Char] -> [Char] -> Bool;
strcmp x y = x == y;
entier x = fromIntegral (floor x);
land_i :: Int -> Int -> Int;
land_i x y = x .&. y;
lnot_i :: Int -> Int;
lnot_i x = complement x;
lor_i :: Int -> Int -> Int;
lor_i x y = x .|. y;
lshift_i :: Int -> Int -> Int;
lshift_i x y = x `shiftL` y;
rshift_i :: Int -> Int -> Int;
rshift_i x y = x `shiftR` y;
write x = abortstr "write not implemented";
descr l u = (l,u);
destr_update ar i x = ar // [(i,x)];
indassoc (i,v) = i;
lowbound (l,u) = l;
tabulate f (l,u) = listArray (l,u) [f i | i <- [l..u]];
upbound (l,u) = u;
update ar i x = ar // [(i,x)];
valassoc (i,v) = v;
}
|