Hello: I am using GreenCard to import some C code into Haskell. The code I want to import uses "long" in a lot of places. I tried to write my own DIS for it and I also write a very simple test program. However, the DIS does not work properly. My program and test result are as following: -------------------------------------------------------------------------- module TLong where import Foreign.GreenCard type Long = Int64 %dis long x = int64 x %dis int64 x = %%Int64 ({HsInt64} x) %fun tslong :: Long -> Long %call (long a1) %code long a2; % a2 = a1; % printf("the long integer is %d the original is %d \n", a2, a1); %result (long (a2)) ------------------------------------------------------------------------------ ..... TLong>tslong 1 the long integer is -1073752653 the original is -10173752653 -4611732526480752641 ------------------------------------------------------------------------------ I know it is caused by my DIS, but I have no idea what is the right way to do it. Does anyone know the right way to do it? Best Regards Liwen