
Yi an editor written in Haskell - zaphar
http://www.haskell.org/haskellwiki/Yi
======
zaphar
I've recently taken an interest in this editor after reaching various levels
of dissatisfaction with both vim and emacs.

I can get almost an perfect clone of the modal editing of vim with the
hackability of emacs. It still needs some love but I've already submitted two
patches and the developers were really supportive. If your looking for an
excuse to do some haskell coding this might be a good option for you.

~~~
jrockway
I don't think it's as hackable as Emacs. For one thing, you have to recompile
Yi after every change. Sure, it's automated, but with Emacs, the change takes
place immediately.

(When I write XMonad extensions, I do find the process a little tedious. I
have to type my extension, then see if ghci can compile it, then I have to
press a key to recompile and reload xmonad, then I can try out my changes.
Every. Time. In Emacs, I just press C-M-x and try my change immediately.)

Really, there are two parts to editor extension. Some things are interactive
hacks, and some things are structured sub-programs. Things like SLIME and
CEDET are sub-programs, and they would benefit greatly from a more expressive
(and faster-running language). But everything else benefits from the do-
anything-you-want style of Emacs Lisp, because you can develop your
development environment interactively. It's really a wonderful experience,
even though you don't have closures or classes with multiple inheritance.

One of my plans for the future is to replace the C core of GNU Emacs with
Haskell, so that complex extensions can be more easily implemented. But Emacs
Lisp will still be around for when "scripting" is good enough.

~~~
zaphar
I see no reason you couldn't add an embedded lisp to Yi. It's actually on my
list of things to try eventually. I do agree the compile step is annoying but
I've found myself frustrated enough times with elisp's:

* dynamic scoping. The lack of closures is pretty limiting. I can live without the objects and inheritance but I really really want closures.

* key bindings parsing. Vimpulse is basically incapable of implementing some of my most often used vim commands because of the way the key bindings are parsed.

Both of those things prompted me to go looking for an alternative and this is
what I found. It's been fun so far, perhaps I'll hit a wall again and get
dissatisfied but for now it's a handy hack on something in haskell project.

~~~
jrockway
Agree, but I feel like the Emacs core is more stable and complete than the Yi
core. Every time I try to do something with Yi, I think, "oh, _that's_ why I
still use Emacs".

~~~
zaphar
Perfectly understandable. However I need something to hack on in haskell to
polish my skills so I figure I can just use emacs while I work to make Yi
useable for everyday.

------
xtacy
Is there a Carbon/Cocoa based version available for OSX?

~~~
zaphar
There is some code for it but I'm not sure how far along it is. I don't think
the Cocoa UI is very useable yet though.

~~~
Hemospectrum
In fact, at one time it was usable, but it has gotten less so, assuming it
even still compiles.

~~~
gaius
The last I looked at Yi on OSX (about 3 months ago) it fails to recompile due
to an incompatibility between Haskell package Dyre and the OS. So you can use
it but never configure it.

------
mhd
Let's hope this has a better future than Efuns[1], the Ocaml emacs clone. More
likely that most of its unique features will be assimilated into vim plugins
and Emacs modes.

[1]:
[http://pauillac.inria.fr/cdrom_a_graver/prog/unix/efuns/eng....](http://pauillac.inria.fr/cdrom_a_graver/prog/unix/efuns/eng.htm)

