Simple, visual, functional language for learning about recursion. http://pages.iu.edu/~gdweber/software/sifflet/
|Latest on Hackage:||2.3.0|
Sifflet -- README -- Sifflet
Copyright (C) 2010 Gregory D. Weber
BSD3 license -- see the file "LICENSE" for details
A. In a Cabal sandbox (bracketed parts are optional) (with the source distribution unpacked)
$ cabal sandbox init $ cabal update
You will need this to build the Haskell gtk library if it is not already installed:
$ cabal install gtk2hs-buildtools
$ cabal install --only-dependencies [--enable-tests] $ cabal configure [--enable-tests] $ cabal build [-j4] $ cabal install
B. In a Cabal sandbox, directly installing from Hackage:
$ cabal sandbox init $ cabal update $ cabal install sifflet
Configure, either for system-wide installation:
$ runghc Setup configure
or for installation in a user directory:
$ runghc Setup configure --user --prefix=~/where/to/install/
Build and install:
$ runghc Setup build $ runghc Setup install
Please see the Sifflet home page for documentation:
and especially the tutorial:
% RELEASE NOTES
Release notes for sifflet and sifflet-lib
This is the RELEASE-NOTES file for both sifflet and sifflet-lib. If you are editing it, be sure you are editing the original and not the copies in the app and lib subdirectories.
Release 220.127.116.11, 2012 July 5
Reorganized hierarchical modules to conform to http://www.haskell.org/haskellwiki/Hierarchicalmodulenames
- Sifflet.Data.X is now Data.Sifflet.X for X in [Functoid, Geometry, Tree, TreeGraph, TreeLayout, WGraph]
- Sifflet.Foreign.X is now Language.Sifflet.Export.X for X in [Exporter, Haskell, Python, ToHaskell, ToPython, ToScheme]
- Sifflet.Language.X is now Language.Sifflet.X for X in [Expr, Parser, SiffML]
- Sifflet.Rendering.X is now Graphics.Rendering.Sifflet.X for X in [Draw, DrawTreeGraph]
- Sifflet.Text.X is now Text.Sifflet.X for X in [Pretty, Repr]
- Sifflet.UI.X is now Graphics.UI.Sifflet.X for X in [Callback, Canvas, Frame, GtkForeign, GtkUtil, LittleGtk, RPanel, Tool, Types, Window, Workspace]
- Sifflet.UI is now Graphics.UI.Sifflet
- Sifflet.Util is now Language.Sifflet.Util, and Sifflet.Examples is now Language.Sifflet.Examples. (not clear that this is really the best place for it; maybe it hsould be split into pieces, such as Control.Monad.SuccFail, ...)
- Sifflet.Examples is now Language.Sifflet.Examples.
File menu command to save the image of the Workspace or any open editor window, in SVG, PS, or PDF format.
Implemented type checking with type inference. Type inference can be used for export to languages that require type declarations. Type checking error messages are not friendly for novice programmers; this needs improvement.
- Editing a function can now change its type.
- It is now possible to change the arguments of a function (add, rename, or remove arguments, or for functional arguments, change the kind or arity).
- Bug fixes:
- Fixed bug where the program crashed from incomplete 'if' trees
- Various small bug fixes.
Added RELAX NG schema for siffml version 2.0 (in datafiles). This is an upwards-compatible extension of siffml 1.0, which adds FunctionType to the alternatives for SiffletType.
Added RELAX NG schema for siffml version 1.0 (in datafiles)
Release 18.104.22.168, 2012 Jun 14 (or later)
Compatibility with mtl 2.1.1
Release 1.2.5, 2012 Jun 1
Compatibility with GHC 7.4.1
Release 1.2.4, 2011 Mar 18
Compatibility with HXT > 9.0
Release 1.2.3, 2011 Feb 18
Compatibility with GHC 7 and Haskell Platform 2011.2
Release 1.2.2, 2010 Dec 3
Offers to save changes before quitting
Release 1.2.1, 2010 Nov 19
Compatibility with Haskell GTK packages 0.12
Release 1.2, 2010 Oct 30
- Requires HXT 9.0
- Avoids indirect dependency on curl
Release 1.1, 2010 Aug 24
- Improved Haskell exporter now removes most unnecessary parentheses.
- Exported Haskell code now uses the module Data.Number.Sifflet, formerly Sifflet.Data.Number.
- Sifflet now builds with slightly newer versions of the Haskell "Gtk2hs" libraries (cairo, gtk, glib), should work for versions >= 0.11.0 and < 0.12.
Release 1.0, 2010 Aug 11
Sifflet now has exporters to Scheme, Python, and Haskell and a small supporting "library" for each of those languages. This is intended for beginning students who are learning these languages, not for "industrial-strength" code production.
Although the exporters apparently generate correct code, there are at present too many parentheses -- a few extra in Python, many extra in Haskell; no extra parentheses in Scheme, of course.
Sifflet has a new number type, Sifflet.Data.Number.Number, which allows numbers to be exact or inexact, almost as in Scheme. Originally intended for the Scheme exporter, it is now also used internally by Sifflet's interpreter.
The code is reorganized. There is now a separate library package, sifflet-lib, in addition to the sifflet package which provides only the executable. At present, the library's API is highly unstable.
Sifflet has a new parser for user inputs, made with Parsec, allowing more intuitive input of numbers (liberation from Haskell number syntax: for example, 0.0 can now be entered as 0.0, 0., or .0) and providing more intelligible error messages for some kinds of invalid input.
Sifflet requires Gtk2hs packages (gtk, glib, cairo) version 0.11; support for the 0.10 Gtk2hs packages is dropped.
Release 0.1.7, 2010 June 10
- Tightened upper bounds on package dependency versions, in anticipation of incompatible changes in the fgl API.
- No bug fixes or new features.
- Users who are staying with fgl == 22.214.171.124 will not benefit from upgrading to Sifflet 0.1.7.
Release 0.1.6, 2010 May 27
- Sifflet offers to save your work if you give the quit or open file command and have unsaved changes.
- Sifflet now builds with Gtk2hs 0.11.
- Some bug fixes and improved error checking.
Release 0.1.5, 2010 May 13
First public release.