Settings

Theme

Can your REPL do this?

whalliburton.github.com

119 points by whalliburton 14 years ago · 36 comments

Reader

mtraven 14 years ago

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...

weavejester 14 years ago

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 14 years ago

    Working on it: http://cemerick.com/2011/10/26/enabling-richer-interactions-...

    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 14 years ago

      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.

  • reader5000 14 years ago

    Also animations. Pretty easy to do with swing-based repls, not so sure with others.

colanderman 14 years ago

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

  • whateverer 14 years ago

    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.

  • cldwalker 14 years ago

    Agreed. This has little to do with what their repl can do and is mostly a bunch of functions with their output.

  • funkah 14 years ago

    It's "pretty" and "clever", not actually useful to actual human beings. You know how nerds can be, sometimes.

darklajid 14 years ago

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 14 years ago

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

gruseom 14 years ago

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 14 years ago

    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 14 years ago

      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 14 years ago

        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 14 years ago

          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 14 years ago

            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 14 years ago

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

d0mine 14 years ago

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

omaranto 14 years ago

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

gcr 14 years ago

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 14 years ago

https://github.com/whalliburton/academy

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

brutol 14 years ago

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

anon_d 14 years ago

This is actually pretty cool. Shame about the title.

fbomb 14 years ago

Wow. TRS-80 graphics.

deltasquared 14 years ago

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

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection