114 lines
3.5 KiB
Plaintext
114 lines
3.5 KiB
Plaintext
|
Name: data-reify
|
||
|
Version: 0.6.1
|
||
|
x-revision: 1
|
||
|
Synopsis: Reify a recursive data structure into an explicit graph.
|
||
|
Description: 'data-reify' provided the ability to turn recursive structures into explicit graphs.
|
||
|
Many (implicitly or explicitly) recursive data structure can be given this ability, via
|
||
|
a type class instance. This gives an alternative to using 'Ref' for observable sharing.
|
||
|
.
|
||
|
Observable sharing in general is unsafe, so we use the IO monad to bound this effect,
|
||
|
but can be used safely even with 'unsafePerformIO' if some simple conditions are met.
|
||
|
Typically this package will be used to tie the knot with DSL's that depend of
|
||
|
observable sharing, like Lava.
|
||
|
.
|
||
|
Providing an instance for 'MuRef' is the mechanism for allowing a structure to be
|
||
|
reified into a graph, and several examples of this are provided.
|
||
|
.
|
||
|
History:
|
||
|
Version 0.1 used unsafe pointer compares.
|
||
|
Version 0.2 of 'data-reify' used 'StableName's, and was much faster.
|
||
|
Version 0.3 provided two versions of 'MuRef', the mono-typed version,
|
||
|
for trees of a single type,
|
||
|
and the dynamic-typed version, for trees of different types.
|
||
|
Version 0.4 used 'Int' as a synonym for 'Unique' rather than 'Data.Unique'
|
||
|
for node ids, by popular demand.
|
||
|
Version 0.5 merged the mono-typed and dynamic version again, by using
|
||
|
'DynStableName', an unphantomized version of StableName.
|
||
|
.
|
||
|
© 2009 Andy Gill; BSD3 license.
|
||
|
|
||
|
Category: Language, Data, Parsing, Reflection
|
||
|
License: BSD3
|
||
|
License-file: LICENSE
|
||
|
Author: Andy Gill
|
||
|
Maintainer: Andy Gill <andygill@ku.edu>
|
||
|
Copyright: (c) 2009 Andy Gill
|
||
|
Homepage: http://ku-fpg.github.io/software/data-reify/
|
||
|
Stability: alpha
|
||
|
build-type: Simple
|
||
|
Cabal-Version: >= 1.8
|
||
|
extra-source-files: CHANGELOG.md, README.md
|
||
|
|
||
|
source-repository head
|
||
|
type: git
|
||
|
location: https://github.com/ku-fpg/data-reify
|
||
|
|
||
|
Flag tests
|
||
|
Description: Enable full development tree
|
||
|
Default: False
|
||
|
|
||
|
|
||
|
Library
|
||
|
Build-Depends: base >= 4 && < 5, containers
|
||
|
Exposed-modules:
|
||
|
Data.Reify,
|
||
|
Data.Reify.Graph
|
||
|
Ghc-Options: -Wall
|
||
|
|
||
|
Executable data-reify-test1
|
||
|
Build-Depends: base, data-reify
|
||
|
Main-Is: Test1.hs
|
||
|
Hs-Source-Dirs: test
|
||
|
ghc-options: -Wall
|
||
|
if !flag(tests)
|
||
|
buildable: False
|
||
|
|
||
|
|
||
|
Executable data-reify-test2
|
||
|
Build-Depends: base, data-reify
|
||
|
Main-Is: Test2.hs
|
||
|
Hs-Source-Dirs: test
|
||
|
ghc-options: -Wall
|
||
|
if !flag(tests)
|
||
|
buildable: False
|
||
|
|
||
|
Executable data-reify-test3
|
||
|
Build-Depends: base, data-reify
|
||
|
Main-Is: Test3.hs
|
||
|
Hs-Source-Dirs: test
|
||
|
ghc-options: -Wall
|
||
|
if !flag(tests)
|
||
|
buildable: False
|
||
|
|
||
|
Executable data-reify-test4
|
||
|
Build-Depends: base, data-reify
|
||
|
Main-Is: Test4.hs
|
||
|
Hs-Source-Dirs: test
|
||
|
ghc-options: -Wall
|
||
|
if !flag(tests)
|
||
|
buildable: False
|
||
|
|
||
|
Executable data-reify-test5
|
||
|
Build-Depends: base, data-reify
|
||
|
Main-Is: Test5.hs
|
||
|
Hs-Source-Dirs: test
|
||
|
ghc-options: -Wall
|
||
|
if !flag(tests)
|
||
|
buildable: False
|
||
|
|
||
|
Executable data-reify-test6
|
||
|
Build-Depends: base, data-reify
|
||
|
Main-Is: Test6.hs
|
||
|
Hs-Source-Dirs: test
|
||
|
ghc-options: -Wall
|
||
|
if !flag(tests)
|
||
|
buildable: False
|
||
|
|
||
|
Executable data-reify-test7
|
||
|
Build-Depends: base, data-reify
|
||
|
Main-Is: Test7.hs
|
||
|
Hs-Source-Dirs: test
|
||
|
ghc-options: -Wall
|
||
|
if !flag(tests)
|
||
|
buildable: False
|