haskell-mpi 1.2.0 → 1.2.1
raw patch · 3 files changed
+20/−21 lines, 3 filesdep −haskell98
Dependencies removed: haskell98
Files
- haskell-mpi.cabal +1/−2
- src/C2HS.hs +18/−18
- test/CompileRunClean.hs +1/−1
haskell-mpi.cabal view
@@ -1,5 +1,5 @@ name: haskell-mpi-version: 1.2.0+version: 1.2.1 cabal-version: >= 1.6 synopsis: Distributed parallel programming in Haskell using MPI. description:@@ -114,7 +114,6 @@ src build-depends: base > 3 && <= 5,- haskell98, bytestring, cereal, extensible-exceptions,
src/C2HS.hs view
@@ -4,19 +4,19 @@ -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions are met:--- +-- -- 1. Redistributions of source code must retain the above copyright notice,--- this list of conditions and the following disclaimer. +-- this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the--- documentation and/or other materials provided with the distribution. +-- documentation and/or other materials provided with the distribution. -- 3. The name of the author may not be used to endorse or promote products--- derived from this software without specific prior written permission. +-- derived from this software without specific prior written permission. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN--- NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +-- NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF@@ -28,7 +28,7 @@ -- -- Language: Haskell 98 ----- This module provides the marshaling routines for Haskell files produced by +-- This module provides the marshaling routines for Haskell files produced by -- C->Haskell for binding to C library interfaces. It exports all of the -- low-level FFI (language-independent plus the C-specific parts) together -- with the C->HS-specific higher-level marshalling routines.@@ -36,11 +36,11 @@ module C2HS ( - -- * Re-export the language-independent component of the FFI + -- * Re-export the language-independent component of the FFI module Foreign, -- * Re-export the C language component of the FFI- module CForeign,+ module Foreign.C, -- * Composite marshalling functions withCStringLenIntConv, peekCStringLenIntConv, withIntConv, withFloatConv,@@ -54,16 +54,16 @@ -- * Conversion between C and Haskell types cIntConv, cFloatConv, cToBool, cFromBool, cToEnum, cFromEnum-) where +) where import Foreign hiding (Word) -- Should also hide the Foreign.Marshal.Pool exports in -- compilers that export them-import CForeign+import Foreign.C -import Monad (liftM)+import Control.Monad (liftM) -- Composite marshalling functions@@ -79,19 +79,19 @@ -- Marshalling of numerals -- -withIntConv :: (Storable b, Integral a, Integral b) +withIntConv :: (Storable b, Integral a, Integral b) => a -> (Ptr b -> IO c) -> IO c withIntConv = with . cIntConv -withFloatConv :: (Storable b, RealFloat a, RealFloat b) +withFloatConv :: (Storable b, RealFloat a, RealFloat b) => a -> (Ptr b -> IO c) -> IO c withFloatConv = with . cFloatConv -peekIntConv :: (Storable a, Integral a, Integral b) +peekIntConv :: (Storable a, Integral a, Integral b) => Ptr a -> IO b peekIntConv = liftM cIntConv . peek -peekFloatConv :: (Storable a, RealFloat a, RealFloat b) +peekFloatConv :: (Storable a, RealFloat a, RealFloat b) => Ptr a -> IO b peekFloatConv = liftM cFloatConv . peek @@ -179,7 +179,7 @@ -- produced. -- extractBitMasks :: (Bits a, Enum b, Bounded b) => a -> [b]-extractBitMasks bits = +extractBitMasks bits = [bm | bm <- [minBound..maxBound], bits `containsBitMask` bm] @@ -196,7 +196,7 @@ cFloatConv :: (RealFloat a, RealFloat b) => a -> b cFloatConv = realToFrac -- As this conversion by default goes via `Rational', it can be very slow...-{-# RULES +{-# RULES "cFloatConv/Float->Float" forall (x::Float). cFloatConv x = x; "cFloatConv/Double->Double" forall (x::Double). cFloatConv x = x #-}@@ -208,7 +208,7 @@ -- |Obtain Haskell 'Bool' from C value. ---cToBool :: Num a => a -> Bool+cToBool :: Eq a => Num a => a -> Bool cToBool = toBool -- |Convert a C enumeration to Haskell.
test/CompileRunClean.hs view
@@ -22,7 +22,7 @@ module Main where -import System (getArgs)+import System.Environment (getArgs) import System.Cmd (system) import System.Exit (ExitCode (..), exitWith) import Control.Monad (when)