Name: mathlink Version: 2.0.0.4 Cabal-Version: >= 1.6 Build-Type: Custom License: BSD3 License-File: LICENSE Copyright: Copyright (c) Tracy Wadleigh 2009 Author: Tracy Wadleigh Maintainer: Bug-Reports: mailto:tracy.wadleigh@gmail.com?subject=dev-mathlink Homepage: http://community.haskell.org/~TracyWadleigh/mathlink Stability: experimental Synopsis: Write Mathematica packages in Haskell Tested-With: GHC >= 6.10.1 Category: Foreign Extra-Source-Files: INSTALL, example/Test.hs Description: { Makes it easy to write /Mathematica/ packages in Haskell. Just write some functions and provide a package specification in a simple DSL that mimics that of /Mathematica/'s @mprep@ utility. . Data marshaling is accomplished via the 'MLGet' and 'MLPut' classes, which specify types that that can be read from or written to the /MathLink/ connection. Instances of these classes are provided for the obvious standard data types, including tuples, lists, 'Array's and 'UArray's. . A Haskell function that is to be exposed to /Mathematica/ has the type signature @('MLGet' a, 'MLPut' b) => a -> IO b@. . A simple example of a /Mathematica/ package: . @ import Foreign.MathLink . \-- define a function addTwo :: (Int,Int) -> IO Int addTwo (x,y) = return $ x+y . \-- specify a package spec :: MLSpec spec = \ -- start a package definition \ [ Eval $ \"BeginPackage\":\@[St \"Test\`\"] . \ -- define a usage message for the public symbol \ , DeclMsg \"AddTwo\" \"usage\" \"AddTwo[..] adds a pair of numbers\" . \ -- open a new (private) namespace \ , Eval $ \"Begin\":\@[St \"\`Private\`\"] . \ -- declare the function \ , DeclFn { \ callPattern = \"AddTwo[x_Integer,y_Integer]\" \ , argPattern = \"{x,y}\" \ , func = addTwo \ } . \ -- close the namespaces \ , Eval $ \"End\":\@[] \ , Eval $ \"EndPackage\":\@[] \ ] . \-- runs the /MathLink/ connection main :: IO () main = runMathLink spec @ } Library Build-Depends: base >= 4.0 && < 4.2, mtl >= 1.1 && < 1.2, haskell98, array >= 0.2 && < 0.3, containers >= 0.2 && < 0.3, ix-shapable Exposed-Modules: Foreign.MathLink Foreign.MathLink.Expression Foreign.MathLink.Internal Include-Dirs: cbits Includes: ml.h mathlink.h C-Sources: cbits/ml.c Build-Tools: c2hs Ghc-Options: -fexcess-precision -funbox-strict-fields -Wall Source-Repository head Type: darcs Location: http://community.haskell.org/~TracyWadleigh/darcs/mathlink/