

Can your REPL do this? - whalliburton
http://whalliburton.github.com/academy/

======
mtraven
Still waiting for a REPL that could what Lisp Machines could do in the early
80s -- namely integrate graphics with object-specific behavior.

<http://dspace.mit.edu/handle/1721.1/6946>

<http://en.wikipedia.org/wiki/Common_Lisp_Interface_Manager>

[http://www.sts.tu-harburg.de/~r.f.moeller/uims-clim/clim-
int...](http://www.sts.tu-harburg.de/~r.f.moeller/uims-clim/clim-intro.html)

~~~
gatlin
I think [Racket][1] does this.

[1]: <http://racket-lang.org>

~~~
omaranto
Here is a direct link to a tutorial that shows off graphics in the Racket
REPL: <http://docs.racket-lang.org/quick/index.html>

------
weavejester
Factor's REPL can handle images, colours and fonts:

<http://re-factor.blogspot.com/2010/09/visual-repl.html>

I've been meaning to write something like Factor's REPL for Clojure, but
haven't gotten around to it yet.

~~~
cemerick
Working on it: [http://cemerick.com/2011/10/26/enabling-richer-
interactions-...](http://cemerick.com/2011/10/26/enabling-richer-interactions-
in-the-clojure-repl/)

In a heterogeneous mix of tools, getting the channel right is a big part of
the challenge. Lots of the interactivity is going to be client-specific (i.e.
what's possible / attractive in Eclipse is different from Emacs/vim/TextMate),
but the channel underneath is a big enabler.

Would love to hear what you have in mind specifically, if only to see if
there's a vector I'm not considering that I should be.

~~~
weavejester
I was thinking of using a browser, as you'd get images, tables and so forth
for free. The Ace code editor could be used for the prompt, which would
provide syntax highlighting and indent rules for the prompt.

------
colanderman
I don't get this. Someone wrote a bunch of cute Lisp functions that use
Unicode and put them on a webpage?

~~~
whateverer
Yes, it was pretty artistic as far as programs linked on Hacker News go, but
technically... it was just a bunch of functions and macros which produced
formatted strings.

Not that it's bad on itself, but the title suggested otherwise.

------
darklajid
I didn't find a decent/direct way to get to the code itself. This seems to be
the repository that is mentioned/used in that text:

<https://github.com/whalliburton/academy>

Edit: And someone who likes dead prez I certainly got a kick out of the
hexagram examples. Haven't seen those for a while.

<https://en.wikipedia.org/wiki/Dead_Prez>

------
raldi
Yes. It was called BASIC and it came with my IBM PC XT in 1985.

------
gruseom
Somebody showed me some shit Mathematica can do (by way of embedding images
and live representations of data) that goes way beyond this and any other Lisp
REPL I've seen, so let's not get too smug.

On another note, it's a pleasure to see a bit of the I Ching in there - in the
classic Wilhelm/Baynes edition, no less. It is one of the greatest works of
civilization. (As for Wilhelm/Baynes: how a translation of a translation could
have turned out so well is a mystery. Putting it beside any other I Ching in
English is like comparing a Monet to a daguerreotype.)

~~~
pnathan
I rarely use the REPL directly in Lisp anymore, I use the Superior Lisp
Interaction Mode for Emacs, better known as SLIME. emacs had a project running
for a while for video editing. It also has a working google maps embedding.
I'm sure with appropriate whacking I could intertwine it with a Lisp listener
instead of my IDE.

~~~
gruseom
Slime is a Lisp REPL. It's the one I was thinking of. Yes, people have dabbled
around the edges adding images and other things that Emacs can do. But that
isn't the same thing as a REPL designed with data visualization in mind. Lisp
is not the state of the art here.

~~~
pnathan
Granted.

To be 100% honest, I'm not sure why a programming language REPL needs to have
full data visualization. I may not fully get the idea of REPLs, but it would
seem to me that that would be the responsibility of a layer above it to manage
data presentation; sophisticated data I would consider to require a domain-
specific viewer anyway.

~~~
gruseom
I agree with you there, so I guess what I want is a REPL that has hooks for
custom printers, i.e to display an object of type X my way instead of the
usual way. I'd like "printing" to optionally include graphics or whatever else
makes for a good display of that data. And I'd like the representation to be
interactive, so that one can drill down into sub-data or whatever else is
appropriate. That too (obviously) is the responsibility of the custom printer,
not the REPL itself, but I wish the REPL would make it easy to build such
extensions. Little domain-specific visualizers.

Why? Well, some programs rely heavily on specific data structures that may not
be very easy to interact with if you print them out as generic lists or
hashtables or whatever. The Slime Inspector is next to useless for things of
any complexity.

~~~
pnathan
I present to you print-object, a generic function in Common Lisp.

<http://clhs.lisp.se/Body/f_pr_obj.htm>

So say you have a object type FOO, you can do this:

    
    
        (defmethod print-object ((obj FOO) stream)
          ...)
    

Now, when you have a FOO on the repl, print-object will be called.

Obviously it doesn't provide a drilldown approach and any number of nifty and
useful functions.

------
yvdriess
Well I learned something new. SBCL and CLISP seem to have good unicode support
that work well with emacs+slime.

------
d0mine
Racket <http://docs.racket-lang.org/quick/index.html>

------
omaranto
Just to make sure I understand: in "Can your REPL do this?" the word "this"
refers to printing Unicode characters, right?

------
gcr
DrRacket's REPL supports image literals. The racket language also includes
functions for manipulating these. Take a look at this program:
<http://img13.imageshack.us/img13/6493/drracket.jpg>

In the "Definitions" pane at the top, we define three variables, _bruce-lee_ ,
_energy-blast_ , and _terrible-accident_. In the "Interations" pane at the
bottom (here's the REPL), we compose them together.

------
rryan
<https://github.com/whalliburton/academy>

Since there's no link to the actual repo in that document.

------
brutol
(let ((i0 (parse-integer "4DF0" :radix 16))) (loop for i from i0 to (+ i0 300)
do (princ (string (code-char i)))))
䷰䷱䷲䷳䷴䷵䷶䷷䷸䷹䷺䷻䷼䷽䷾䷿一丁丂七丄丅丆万丈三上下丌不与丏丐丑丒专且丕世丗丘丙业丛东丝丞丟丠両丢丣两严並丧丨丩个丫丬中丮丯丰丱串丳临丵丶丷丸丹为主丼丽举丿乀乁乂乃乄久乆乇么义乊之乌乍乎乏乐乑乒乓乔乕乖乗乘乙乚乛乜九乞也习乡乢乣乤乥书乧乨乩乪乫乬乭乮乯买乱乲乳乴乵乶乷乸乹乺乻乼乽乾乿亀亁亂亃亄亅了亇予争亊事二亍于亏亐云互亓五井亖亗亘亙亚些亜亝亞亟亠亡亢亣交亥亦产亨亩亪享京亭亮亯亰亱亲亳亴亵亶亷亸亹人亻亼亽亾亿什仁仂仃仄仅仆仇仈仉今介仌仍从仏仐仑仒仓仔仕他仗付仙仚仛仜仝仞仟仠仡仢代令以仦仧仨仩仪仫们仭仮仯仰仱仲仳仴仵件价仸仹仺任仼份仾仿伀企伂伃伄伅伆伇伈伉伊伋伌伍伎伏伐休伒伓伔伕伖众优伙会伛伜
NIL

~~~
adobriyan
#x4DF0

------
anon_d
This is actually pretty cool. Shame about the title.

------
fbomb
Wow. TRS-80 graphics.

------
deltasquared
To run the demos from SBCL: (require 'asdf) (asdf:operate 'asdf:load-op
'academy) (in-package :academy) (help)

