The mathlink package

[Tags: bsd3, library]

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, Arrays and UArrays.

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

Properties

Versions0.1.0.0, 0.1.0.1, 0.1.0.2, 1.0.0.0, 1.0.0.1, 1.1.0.0, 1.1.0.1, 1.1.0.2, 2.0.0.3, 2.0.0.4, 2.0.0.5, 2.0.0.7, 2.0.1.1
Dependenciesarray (==0.2.*), base (>=4.0 && <4.2), containers (==0.2.*), haskell98, ix-shapable, mtl (==1.1.*)
LicenseBSD3
CopyrightCopyright (c) Tracy Wadleigh 2009
AuthorTracy Wadleigh
Maintainer<tracy.wadleigh@gmail.com>
Stabilityexperimental
CategoryForeign
Home pagehttp://community.haskell.org/~TracyWadleigh/mathlink
Bug trackermailto:tracy.wadleigh@gmail.com?subject=dev-mathlink
Source repositoryhead: darcs get http://community.haskell.org/~TracyWadleigh/darcs/mathlink/
Upload dateMon May 18 18:01:07 UTC 2009
Uploaded byTracyWadleigh
Downloads699 total (64 in last 30 days)

Modules

Downloads

Maintainers' corner

For package maintainers and hackage trustees