File tree Expand file tree Collapse file tree 8 files changed +15
-13
lines changed Expand file tree Collapse file tree 8 files changed +15
-13
lines changed Original file line number Diff line number Diff line change @@ -9,7 +9,6 @@ module Foreign.Matlab.Array.Able (
9
9
withMatlabArray , fromMatlabArray
10
10
) where
11
11
12
- import Control.Applicative
13
12
import Foreign.Matlab.Util
14
13
import Foreign.Matlab.Types
15
14
import Foreign.Matlab.Array.IMX
@@ -46,7 +45,7 @@ instance Matlabable () where
46
45
fromMatlab _ = Nothing
47
46
48
47
-- | Generate a temporary 'MXArray'
49
- withMatlabArray :: Matlabable a => With a MAnyArray ( IO a )
48
+ withMatlabArray :: Matlabable a => a -> ( MAnyArray -> IO a ) -> IO a
50
49
withMatlabArray = withIMXData . toMatlab
51
50
52
51
-- | Convert directly from 'MXArray' (without freeing the original array)
Original file line number Diff line number Diff line change @@ -27,7 +27,7 @@ mxAuto (MXArray a)
27
27
| otherwise = MXAuto =.< newForeignPtr mxDestroyArray_ptr a
28
28
29
29
-- | Use a 'MXAuto'
30
- withMXAuto :: With ( MXAuto a ) (MXArray a ) ( IO b )
30
+ withMXAuto :: MXAuto a -> (MXArray a -> IO b ) -> IO b
31
31
withMXAuto (MXAuto a) f = withForeignPtr a (f . MXArray )
32
32
33
33
type MAnyAuto = MXAuto MAny
Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ module Foreign.Matlab.Array.IMX (
8
8
IMXData (.. ),
9
9
IMXArrayElem ,
10
10
11
- -- * Interface with "Matlab.Array"
11
+ -- * Interface with "Foreign. Matlab.Array"
12
12
imxData , iMXData ,
13
13
imxFun , iMXFun ,
14
14
withIMXData , takeIMXData ,
@@ -96,8 +96,8 @@ listIMX s = imxConstr . listIMXArray s
96
96
-- | Generic 'IMXData' scalar constructor
97
97
scalarIMX :: IMXArrayElem a => a -> IMXData
98
98
scalarIMX = imxConstr . scalarIMXArray
99
- emptyIMX :: IMXArrayElem a => a -> IMXData
100
- emptyIMX a = listIMX [0 ] ([] `asTypeOf` [a])
99
+ -- emptyIMX :: IMXArrayElem a => a -> IMXData
100
+ -- emptyIMX a = listIMX [0] ([] `asTypeOf` [a])
101
101
102
102
-- | Generic 'IMXData' array size accessor
103
103
imxSize :: IMXData -> MSize
@@ -218,14 +218,14 @@ iMXData = imxd where
218
218
mxArraySetAll m =<< mapM f (elems a)
219
219
return $ anyMXArray m
220
220
221
- withIMXData :: With IMXData MAnyArray ( IO a )
221
+ withIMXData :: IMXData -> ( MAnyArray -> IO a ) -> IO a
222
222
withIMXData d f = do
223
223
a <- iMXData d
224
224
r <- f a
225
225
freeMXArray a
226
226
return r
227
227
228
- withIMXDataList :: With [IMXData ] [MAnyArray ] ( IO a )
228
+ withIMXDataList :: [IMXData ] -> ( [MAnyArray ] -> IO a ) -> IO a
229
229
withIMXDataList = mapWith withIMXData
230
230
231
231
takeIMXData :: MXArray a -> IO IMXData
Original file line number Diff line number Diff line change @@ -17,10 +17,10 @@ import Foreign.Matlab.Array
17
17
-- | A wrapper for 'MXArray' to allow for a 'Data.Array.MArray.MArray' instance. All instances of this type will have 'MIndex' as @i@
18
18
newtype MMXArray i e = MMXArray { mmxArray :: MXArray e }
19
19
20
- -- | Get an 'MArray' instance for an 'MXArray'. The resulting object is just a different interface to the same underlying array.
20
+ -- | Get an 'Data.Array.MArray. MArray' instance for an 'MXArray'. The resulting object is just a different interface to the same underlying array.
21
21
mxMArray :: MXArrayComponent a => MXArray a -> MMXArray MIndex a
22
22
mxMArray = MMXArray
23
- -- | Get a 'MXArray' back from its 'MArray' instance
23
+ -- | Get a 'MXArray' back from its 'Data.Array.MArray. MArray' instance
24
24
unMmxArray :: MXArrayComponent a => MMXArray MIndex a -> MXArray a
25
25
unMmxArray = mmxArray
26
26
Original file line number Diff line number Diff line change @@ -73,7 +73,7 @@ data EngineEvalArg a = EvalArray (MXArray a) | EvalVar String
73
73
-- This automates 'engineSetVar' on arguments (using \"hseval_inN\"), 'engineEval', and 'engineGetVar' on results (using \"hseval_outN\").
74
74
engineEvalFun :: Engine -> String -> [EngineEvalArg a ] -> Int -> IO [MAnyArray ]
75
75
engineEvalFun eng fun arg no = do
76
- arg <- zipWithM makearg arg [1 .. ]
76
+ arg <- zipWithM makearg arg [1 :: Int .. ]
77
77
let out = map makeout [1 .. no]
78
78
let outs = if out == [] then " " else " [" ++ unwords out ++ " ] = "
79
79
engineEval eng (outs ++ fun ++ " (" ++ intercalate " ," arg ++ " )" )
Original file line number Diff line number Diff line change @@ -108,6 +108,7 @@ instance MType MXClassID MXClass where
108
108
hs2mx MXClassUint64 = # const mxUINT64_CLASS
109
109
hs2mx MXClassFun = # const mxFUNCTION_CLASS
110
110
hs2mx MXClassObject = # const mxOBJECT_CLASS
111
+ mxClassOf _ = error " mxClassOf: no class for MXClassID"
111
112
112
113
type MXChar = # type mxChar
113
114
type MChar = Char
Original file line number Diff line number Diff line change @@ -57,10 +57,12 @@ terminateApp term = modifyMVar_ initialized maybeterm where
57
57
else fail " mclTerminateApplication"
58
58
maybeterm n = return $ pred n
59
59
60
+ {-
60
61
foreign import ccall unsafe mclInitializeApplication :: InitApp
61
62
foreign import ccall unsafe mclTerminateApplication :: TermApp
62
63
initialize = initializeApp mclInitializeApplication
63
64
terminate = terminateApp mclTerminateApplication
65
+ -}
64
66
65
67
foreign import ccall " dynamic" mkInitApp :: FunPtr a -> InitApp
66
68
foreign import ccall " dynamic" mkTermApp :: FunPtr a -> TermApp
Original file line number Diff line number Diff line change @@ -50,10 +50,10 @@ mapWithArrayLen w l f =
50
50
in set l 0
51
51
52
52
segment :: Int -> [a ] -> [[a ]]
53
- segment n [] = []
53
+ segment _ [] = []
54
54
segment n l = a : segment n r where (a,r) = splitAt n l
55
55
56
56
replaceIndex :: [a ] -> Int -> a -> [a ]
57
57
replaceIndex [] _ _ = error " replaceIndex: index too large"
58
- replaceIndex (x : l) 0 y = y: l
58
+ replaceIndex (_ : l) 0 y = y: l
59
59
replaceIndex (x: l) n y = x : replaceIndex l (pred n) y
You can’t perform that action at this time.
0 commit comments