Skip to main content

Liskell standalone

Some time has passed since I last blogged about Liskell. It is not dead nor have I changed my mind that Haskell needs a proper meta-programming facility not to mention a better syntax.

Liskell was a branch of GHC once. Now it sits on top of the GHC API, or I should rather say sneaks behind its back as it creates its own API as the original one is not suitable for the stunts I'm interested in. If Liskell sticks with GHC as its soil, I will definitely send patches upstream to refine the GHC API in the areas where it needs more flexibility for Liskell. However for the moment, my main target was to get something out that compiles with a stable version of GHC.

You can grab it with the usual:

darcs get
This version has been tested with ghc 6.10.1 and should install like:
./Setup.lhs configure
./Setup.lhs build
./Setup.lhs install
cd LskPrelude
make install-inplace
Optionally you can run make tests in the testsuite subdirectory. Thanks to for darcs hosting!


Johan Berntsson said…
What happened to The page seems dead. I'd like to try liskell, but it would be nice to have some documentation too.
Raoul Duke said…
nice to hear it's "not dead yet!"
I just downloaded Darcs 2.2 and Liskell for Windows XP, Service Pack 2, but the following error message appeared when I ran:

./Setup.lhs configure

in Cygwin:

Configuring liskell-0.1...
Setup.lhs: At least the following dependencies are missing:
ghc-paths -any

How should I resolve this issue?
ctnd said…
Really impressed that it now runs on the API instead of specific GHC versions! I couldn't do without my GHC 6.10! Thank you! I hope and look forward to more developments.

To Russell:

Perhaps install this package:

Good luck!
ctnd said…
Okay, I got Liskell running and compiling here with a couple of changes:

In Main.hs, change:

-- GHC.runGhc (Just "/home/clemens/deploy/ghc-6.10.1/lib/ghc-6.10.1/") $ do
GHC.runGhc (Just "/home/chris/.GHC/lib/ghc-6.10.1/") $ do

To the appropriate value as I have.

./Setup.lhs configure --user
./Setup.lhs build
./Setup.lhs install

$ cd LskPrelude/
$ make
$ make install-inplace

Couldn't really get the tests working but I don't much care about that right now, just want to play with Liskell.

Hope you guys figure it out!

This comment has been removed by the author.
To ctnd:

Thanks for the advice, but:

> In Main.hs, change:
> -- GHC.runGhc (Just "/home/clemens/deploy/ghc-6.10.1/lib/ghc-6.10.1/") $ do
> GHC.runGhc (Just "/home/chris/.GHC/lib/ghc-6.10.1/") $ do

Done. However, the building step still fails:

> $ ./Setup.lhs build
> Preprocessing library liskell-0.1...
> Setup.lhs: The program happy is required but it could not be found

But "happy" is installed and listed in the PATH!

> $ which happy
> /cygdrive/c/Program Files/Haskell/bin/happy

> Perhaps install this package:

Already installed; _viz_:

> $ cabal install ghc-paths
> Resolving dependencies...
> No packages to be installed. All the requested packages are already installed.
> If you want to reinstall anyway then use the --reinstall flag.

How should I resolve this issue?
Incidentally, because there was no way to edit my comment after submission, the following entry above refers to the comment immediately following it, after I had deleted the comment in order to edit out misplaced quoted-line indentation marks ("> "). Now I preview all my comments before posting them to avoid this problem recurring:

> Comment deleted
> This post has been removed by > the author.
> 25 January 2009 20:49

By the way, is there any way to remove the "Comment deleted" comment? Since I deleted my own comment in order to edit its contents after submission, perhaps the administrator of this blog could delete that auto-comment together with this additional explanatory comment? It takes up space and serves no purpose here.
ctnd said…
Hi Russell,

I had the same problem:

Configuring liskell-0.1...
Setup.lhs: At least the following dependencies are missing:
ghc-paths -any

I solved it by configuring as --user. I should've done this from the start as my GHC and cabal packages are all --user installed anyway.

./Setup.lhs configure --user
./Setup.lhs build
./Setup.lhs install

Hopefully it's the same for you.

RE the `happy` problem, no idea.

Good luck.

P.S. I saw your question on the mailing list but I'm unable to post to the list (despite asking for help from the admins) so I'll have to respond here.
To ctnd:

Thanks again for the response.

This time, a parse error occurs in the building phase:

> Main.hs:218:0: parse error (possibly incorrect indentation)

These are lines 218-19 of my Main.hs file:

> partition_args :: [String] -> [(String, Maybe Phase)] -> [String]
> -> ([(String, Maybe Phase)], [String])

I tried merging line 219 into line 218, but the same error recurs.

In addition, the following error occurs during the install phase:

>Setup.lhs: dist\build\liskell\liskell.exe: copyFile: does not exist (No such fil
e or directory)

Sorry for the repeated questions, but would you happen to know how to resolve these issues?
Nik said…
./Setup.lhs build issues a warning

Could not find module `InteractiveUI':

Help on how to resolve this would be welcome!
Nik: Unfortunately, that comes from GHC stable updates. Please darcs pull -a, I just pushed a new version.
Nik said…
Dear Clemens,
Thank you for the update! Will upgrade to Snow Leopard and try again ...
mifrai said…
Hm, I can't get it to build. This is what I get:

./Setup.lhs build
Preprocessing library liskell-0.1...
Preprocessing executables for liskell-0.1...
Building liskell-0.1...
[1 of 6] Compiling ReadRationalS ( ReadRationalS.hs, dist/build/ReadRationalS.o )
[2 of 6] Compiling LskParseTree ( LskParseTree.hs, dist/build/LskParseTree.o )
[3 of 6] Compiling LskTransformationMonad ( LskTransformationMonad.hs, dist/build/LskTransformationMonad.o )
[4 of 6] Compiling LexLiskell ( dist/build/LexLiskell.hs, dist/build/LexLiskell.o )
[5 of 6] Compiling ParseLiskell ( dist/build/ParseLiskell.hs, dist/build/ParseLiskell.o )
[6 of 6] Compiling Liskell ( Liskell.hs, dist/build/Liskell.o )
/usr/bin/ar: creating dist/build/libHSliskell-0.1.a

Could not find module `GHCSalat.GhciTags':
Use -v to see a list of the files searched for.

Any ideas?
schulte said…
I see I'm over a year late to this comment thread. In trying to compile liskell I have the same problem mentioned above

Could not find module `GHCSalat.GhciTags':
Use -v to see a list of the files searched for.

and no liskell executable is created.

Any advice? Is liskell now actually dead?

Popular posts from this blog

XMonad GridSelect

Personally, I not just need a window manager, I need a focus manager. I tend to think of windows as TODO items, and as there are many TODOs in life there are many windows on my workspaces. Usually a fraction of that can't be closed or worked on immediately, so they linger around on my desktop, cluttering my workspace.I used to use the Tabbed layout. But Tabbed isn't the answer when you are a guy who reports bugs such as "XMonad 0.6 with Tabbed dies when firefox-session-restore slams 40 windows at once on the desktop". In other words, I use a lot of windows. The workspaces concept isn't particularly useful to me either. My mind just doesn't work with mental boxes. So the result is, that I have too few workspaces with too much windows on them, so that Tabbed has trouble displaying useful window titles, and navigating through them is slow and cumbersome (mostly because tab switching generates a lot of useless X Expose events).GridSelect is my answer to that. It…

Removing CHS based access from windows boot loaders

Recently, I had troubles to migrate my Windows installation from VMWare to VirtualBox. When booting the vmware created partition in virtualbox, I got "NTLDR not found". So I sharpened the knives and got down to business with vmware's gdb interface and virtualbox's internal debugger. Tracing the execution showed that the BIOSes of the two products reported different geometries on the INT 13h interface. The generic method contained in the boot loader to read a sector from disk is "clever" as it checks whether the sector is below the maximum sector index that is reachable with the CHS geometry reported by the BIOS. If not, it uses the LBA interface of the BIOS. If yes, the cleverness of the boot loader suddenly vanishes. Instead of using the BIOS reported geometry to break the absolute sector down into its CHS components, the boot loader uses a geometry stored in the so called BIOS parameter block. That's a section of the first sector embedded into the boo…