|
Haskell with FUNDIO-based side effects
News
|
- 03-Dec-2003
- A new paper about applying the FUNDIO semantics to Haskell is available: See
[1]
- 22-Oct-2003:
- HasFuse has been updated, version 1.1 is available. Changes from version 1.0 to 1.1
and the source of older versions can be found in the archive.
|
About HasFuse
|
- HasFuse allows you to use non-strict direct-call I/O within
Haskell.
- HasFuse is a modification of the Glasgow Haskell Compiler (GHC).
- HasFuse compiles programs which uses unsafePerformIOin
a `safe` way.
- The semantics are given by the FUNDIO-calculus [3].
- In [1] and [2] is described how we applied
the FUNDIO-semantics to Haskell.
|
Download
|
|
Building instructions
|
You need
- the HasFuse source (see above)
- the source of
GHCversion 5.04.3
(for a local copy of the source see above)
- everything what's required to build GHC (another GHC, Happy).
See GHC building guide.
Then extract both source archives (GHC and HasFuse).
Let's assume:
- GHC is in a tree with top-level directory fptools and
- HasFuse in a tree with top-level directory hasfuse.
Merge the source trees. This can easily be done, by copying the HasFuse files over the GHC files.
For example you can do this step with:
cp -r hasfuse/* fptools/
After that, you can create a build tree or use the source tree with
top-level directory fptools
for building.
Building HasFuse is now identical to building GHC, so you should use
the GHC documentation
especially the
GHC building guide for this step.
Perhaps, this works: Go to the fptools
directory and type
autoconf
(cd ghc && autoconf)
Then create the mk/build.mk
(probably an empty file is enough)
After that, type
./configure
gmake
After building you should have a ghc-inplace at fptools/ghc/compiler/ghc-inplace
(or in your buildtree-path) which can be used to compile programs with HasFuse.
|
License
|
HasFuse is provided "as is" and comes with ABSOLUTELY NO WARRANTY.
HasFuse is a small modification of the GHC source code, so it
respects the GHC license.
|
Documentation
|
David Sabel,
"A Guide Through HasFuse"
Institut für Informatik, J.W. Goethe-Universität Frankfurt am
Main, 2003
PDF,
PostScript,
compressed PostScript
A list of modifications of the GHC source code
Textfile, PDF
|
Related papers
|
- [1]
-
David Sabel,
"Realising nondeterministic I/O in the Glasgow Haskell Compiler"
Institut für Informatik, J.W. Goethe-Universität Frankfurt am Main,
Frank-report-17, 2003
PDF,
PostScript,
compressed PostScript,
BibTeX entry
- [2]
-
David Sabel,
"Realisierung der Ein-/Ausgabe in einem Compiler für Haskell bei
Verwendung einer nichtdeterministischen Semantik",
Institut für Informatik, J.W. Goethe-Universität Frankfurt am Main, Diplomarbeit (in german), 2003
PDF,
PostScript,
compressed PostScript
The Haskell examples of this work can be found here.
- [3]
-
Manfred Schmidt-Schauß,
"FUNDIO: A Lambda-Calculus with a letrec, case,
Constructors, and an IO-Interface: Approaching a Theory of unsafePerformIO"
Institut für Informatik, J.W. Goethe-Universität Frankfurt am Main,
Frank-report-16,
2003
PDF,
PostScript,
compressed PostScript,
BibTeX entry
|
Contact
|
HasFuse was developed by David Sabel.
For further questions or a bug-report, you can mail to sabel@cs.uni-frankfurt.de.
|
$Author: sabel $, $Date: 2004/08/01 18:11:45 $
|
uni ffm © 1997, 2004
|
|