From: simonmar Date: Wed, 24 Sep 2003 11:36:24 +0000 (+0000) Subject: [project @ 2003-09-24 11:36:24 by simonmar] X-Git-Tag: nhc98-1-18-release~492 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=da205e4387098f9158d4fc320c3e96254c36c2a3;p=haskell-directory.git [project @ 2003-09-24 11:36:24 by simonmar] Add some realToFrac rules for CFloat,CDouble and CLDouble, so that eg. realToFrac :: CDouble -> Double turns into a no-op. --- diff --git a/Foreign/C/Types.hs b/Foreign/C/Types.hs index 5d896ea..9816f12 100644 --- a/Foreign/C/Types.hs +++ b/Foreign/C/Types.hs @@ -127,6 +127,16 @@ FLOATING_TYPE(CDouble,tyConCDouble,"CDouble",HTYPE_DOUBLE) -- HACK: Currently no long double in the FFI, so we simply re-use double FLOATING_TYPE(CLDouble,tyConCLDouble,"CLDouble",HTYPE_DOUBLE) +{-# RULES +"realToFrac/a->CFloat" realToFrac = \x -> CFloat (realToFrac x) +"realToFrac/a->CDouble" realToFrac = \x -> CDouble (realToFrac x) +"realToFrac/a->CLDouble" realToFrac = \x -> CLDouble (realToFrac x) + +"realToFrac/CFloat->a" realToFrac = \(CFloat x) -> realToFrac x +"realToFrac/CDouble->a" realToFrac = \(CDouble x) -> realToFrac x +"realToFrac/CLDouble->a" realToFrac = \(CLDouble x) -> realToFrac x + #-} + INTEGRAL_TYPE(CPtrdiff,tyConCPtrdiff,"CPtrdiff",HTYPE_PTRDIFF_T) INTEGRAL_TYPE(CSize,tyConCSize,"CSize",HTYPE_SIZE_T) INTEGRAL_TYPE(CWchar,tyConCWchar,"CWchar",HTYPE_WCHAR_T)