2012/1/8 Göran Krampe <go...@krampe.se>: > On 01/08/2012 02:05 AM, Gerry Weaver wrote: >> >> Hello All, >> >> Thank you for all of your responses. They are really helping me get a >> better picture of Pharo, the environment, and the community. >> >> >> I really like the idea of a REPL type interface. If I understand >> correctly, all of the functionality that deals with class/method definition >> is already there. It seems like it would be a matter of writing a little >> server type application that would communicate via stdin/stdout. I assume >> one could then send messages to the code that evaluates methods/function >> definitions and provide result feedback via stdout. Maybe it could also >> understand some commands like doit and accept. It could be interesting to >> have a TCP based interface as well. How difficult would it be to do >> something like this? I may start looking into this. It seems like a good >> project to jump into the deep end, start paddling, and drinking a little >> water (hopefully not too much). Is the code that handles this kind of thing >> readily accessible? I've started looking around a bit.
http://lists.gforge.inria.fr/mailman/listinfo/pharo-coral <-- not TCP-based, but it should be trivial to extend it to use a socket instead of stdin/out > The answer is that it is basically trivial to do and many people have > already done it in various forms - I even did a TCP server for Joe Armstrong > (one of the creators of Erlang) that does similar things: > > http://www.squeaksource.com/JoesServer.html > > ...BUT... when it comes to Joe he wanted to use Squeak from Erlang in order > to dynamically create UIs etc. So he had a reasonable use case. ;) > > ...if you just happe to "like REPLs" then you should really try to use and > learn the Squeak/Pharo IDE. Think of it as a full blown live graphic REPL > with tons of cool tools. Every text area in Pharo/Squeak is a "REPL" anyway. You should definitely learn to use the Squeak/Pharo IDE, even apart from the fact that it's the least rubbish way of writing code. The Workspace is, fair enough, a bit like a REPL. Well, no, it IS a REPL. It's just a REPL that requires you to use a GUI. The complicated part of a Smalltalk REPL is Smalltalk's syntax: it's designed to work at the method level, where some code-holding widget's entire contents holds a single method. This is why Coral and GNU Smalltalk alter the core syntax a bit, to allow marking the start and end of a method. For instance, gst has something like Foo extend [ bar [ ^ 'return!' ] ] to add a method #bar to an existing class Foo. (Or: Smalltalk syntax has no "this is the end of a method" marker, beyond the _optional_ ^ statement.) frank > > regards, Göran >