Answers.Body: <p>Expanding on <a href="https://cseducators.stackexchange.com/a/4003">hotpaw2's answer</a>:</p>
  
  <p><strong>If you have a Mac</strong>, you can use Swift Playgrounds in Xcode.</p>
  
  <p>It allows you to type code and see the results immediately, like this:</p>
  
  <p><a href="https://i.sstatic.net/IHKeE.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/IHKeE.png" alt="Swift Playgrounds Example"></a></p>
  
  <p>It only supports Swift, Apple's new language for making Mac and iOS applications. You can find out more about it over <a href="https://swift.org" rel="nofollow noreferrer">here</a>. It's a good language for small things like learning programming, but it scales up to entire applications.</p>
  
  <p>This all comes with <a href="https://developer.apple.com/xcode" rel="nofollow noreferrer">Xcode</a>, which you can download for free <a href="https://itunes.apple.com/us/app/xcode/id497799835?mt=12" rel="nofollow noreferrer">from the App Store</a>.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-08T17:39:36.840Z
Answers.Text: I am only looking for Free/Libre Software, but I will look at this to see what it offers.
Answers.UserDisplayName: ctrl-alt-delor
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-08T20:50:35.953Z
Answers.Text: Ah, sorry, can't help you there. Swift itself is Apache-licensed, but Xcode is not. (If only... :( )
Answers.UserDisplayName: SilverWolf
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-09T16:05:38.907Z
Answers.Text: So do we need Xcode to run Swift?
Answers.UserDisplayName: ctrl-alt-delor
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-10T14:17:37.880Z
Answers.Text: No, you don't. You need Xcode to run the playgrounds or build Mac/iOS apps, but Swift itself will work just fine without it--even on Linux! (You can still use a REPL or compile it into an executable.)
Answers.UserDisplayName: SilverWolf
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-10T14:17:54.620Z
Answers.Text: Note that on Mac, you're better off getting Xcode anyway, as it comes with the compiler, etc. (If you try to run clang/gcc without it, it'll prompt you to install the Command Line Tools, which contains the compiler, etc. but not the Xcode GUI.)
Answers.UserDisplayName: SilverWolf
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-10T15:15:25.987Z
Answers.Text: Also, on Linux, it will have most but not all of the Foundation API, as the Objective-C runtime is not part of the open-source project. (So `String` but no `NSString`, for example.)
Answers.UserDisplayName: SilverWolf
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-06T19:52:50.307Z
Answers.LastActivityDate: 2017-12-06T20:12:00.100Z
Answers.LastEditDate: 2017-12-06T20:12:00.100Z
Answers.UserDisplayName: SilverWolf
Answers.Body: <p>In addition to Racket, check out drjava for Java and drpython for Python.</p>
  
  <p>For Python you can also check out Thonny.</p>
  
  <p>All have a repl section and a code section. Write your definitions in the code section and interact in the repl section.</p>
  
  <p>Emacs can also be configured this way for a whole host of languages.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-11-25T01:17:48.167Z
Answers.LastActivityDate: 2017-11-25T01:17:48.167Z
Answers.UserDisplayName: Mike Zamansky
Answers.Body: <p>What I have found so far. I don't think this is suitable for teaching a class of beginners, as it is too complex.</p>
  
  <p>In <code>ipython</code>, you can display the code of a function/procedure, variable…, by typing its name followed by two <code>?</code>.</p>
  
  <pre><code>In [10]: double??
  Signature: double(a)
  Source:
  def double(a):
      return a*2
  File:      ~/&lt;ipython-input-8-4a40aa4fc91f&gt;
  Type:      function
  
  In [11]: a=5
  
  In [12]: a??
  Type:        int
  String form: 5
  
  In [13]: %ed double
  </code></pre>
  
  <p>Now the terminal switches to an editor, when I quit the editor the new definition is invoked, and I return to repl mode. </p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-11-21T14:07:24.573Z
Answers.LastActivityDate: 2017-11-21T21:47:40.270Z
Answers.LastEditDate: 2017-11-21T21:47:40.270Z
Answers.UserDisplayName: ctrl-alt-delor
Answers.Body: <p>I can wholeheartedly suggest Xamarin Workbooks:
  <a href="https://developer.xamarin.com/guides/cross-platform/workbooks/" rel="nofollow noreferrer">https://developer.xamarin.com/guides/cross-platform/workbooks/</a></p>
  
  <p>Awesome, nice UI. You can use it for more than Xamarin, if you are teaching any .NET based class, it is a very valuable tool. There are a couple of sample workbooks avaialable here: <a href="https://developer.xamarin.com/guides/cross-platform/workbooks/samples/" rel="nofollow noreferrer">https://developer.xamarin.com/guides/cross-platform/workbooks/samples/</a></p>
  
  <p>And the best part is that you can extend it yourself, if you know a little typescript. I've created one a while back to demonstrate how Entity Framework Code First creates the database tables from the defined source code. You can check it out here, if you are interested: <a href="http://dotnetfalcon.com/net-workbooks-entity-framework-model-explorer/" rel="nofollow noreferrer">http://dotnetfalcon.com/net-workbooks-entity-framework-model-explorer/</a></p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-11-27T18:43:58.000Z
Answers.Text: Can you tell us a little about it. Tell us what makes it good, in context to the question.
Answers.UserDisplayName: ctrl-alt-delor
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-11-27T18:50:15.580Z
Answers.Text: I have looked at their website, and found out nothing about it. I feel like they are trying to herd me toward the pay wall. I just found a link “Tell me more about Xamerin“, it takes to to a page with little info, and a big download button, this button takes me to a sign up page. They need to get their marketing in gear, who would buy something that they can not find out what it is?
Answers.UserDisplayName: ctrl-alt-delor
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-11-27T20:13:51.300Z
Answers.Text: I like the nice UI and the extensiblity, as stated in my answer. I also gave an example of how I extended it, but I see other useful ways (e.g. when teaching OO, you can extend it to draw the class diagram at the end). You can also edit the code "on-the-fly" and rerun it, as required by OP.
Answers.UserDisplayName: Akos Nagy
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-11-27T20:15:15.713Z
Answers.Text: And here's the page for the installer: https://developer.xamarin.com/guides/cross-platform/workbooks/install/ Just click on the second option and you can download it. Btw. Xamarin is part of any edition of Visual Studio, the Community Edition also, which is for free.
Answers.UserDisplayName: Akos Nagy
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-11-27T20:20:53.657Z
Answers.Text: I will not download anything, until I first know why. What is good about Xamarin?
Answers.UserDisplayName: ctrl-alt-delor
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-11-29T09:36:21.190Z
Answers.Text: You can use it for more than just Xamarin, as stated in the comments. It's just that the team inside Microsoft that published this tool is the team responsible for Xamarin. You can use it for plain old C# (that's how I use it).
Answers.UserDisplayName: Akos Nagy
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-11-27T10:14:55.907Z
Answers.LastActivityDate: 2017-11-27T10:14:55.907Z
Answers.UserDisplayName: Akos Nagy
Answers.Body: <p>DrRacket combines a coding window with a REPL environment.  It would mean moving out of the imperative paradigm into a functional one, but the setup is really quite nice:</p>
  
  <p><a href="https://i.sstatic.net/yyU7E.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/yyU7E.png" alt="enter image description here"></a></p>
  
  <p>The top window is called the <em>Definitions Window</em>, and the bottom is called the <em>Interactions Window</em>.  Work in the bottom window for as long as you like, but once you have something built up, copy the all-important function definition into the top.  </p>
  
  <p>Be warned that when you press the <code>run</code> button, the interactions window is cleared.  However, you can now freely utilize any functions that have been defined in the top area.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-11-21T19:51:52.617Z
Answers.Text: Since Java has recently added REPL support to the language, I suspect that Eclipse and others will soon have support. That is remarkable for a language like Java, actually.
Answers.UserDisplayName: Buffy
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-11-21T21:56:32.790Z
Answers.Text: Will give it a look. As I said I don't care about language. As long as I don't loose something more valuable. However what I rely would like is some way to move `number-checker` from the bottom window to the top, not by pasting, but by asking it to move (e.g. `(show (number-checker))`  or `(clip (number-checker))` to put into clip-board.
Answers.UserDisplayName: ctrl-alt-delor
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-11-21T19:44:50.227Z
Answers.LastActivityDate: 2017-11-21T19:44:50.227Z
Answers.UserDisplayName: Ben I.
Answers.Body: <ol>
  <li><p>Repl.it <a href="http://repl.it" rel="nofollow noreferrer">REPL.it</a>supports several languages. It also supports manual and automatic testing (unit tests). When students complete task they can see instructor model solution.</p></li>
  <li><p>Google currently supports Jupyter Notebooks <a href="https://colab.research.google.com" rel="nofollow noreferrer">https://colab.research.google.com</a> which would allow you some pedagogical tools in terms of embedding code within explanations.</p></li>
  </ol>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-18T17:22:25.810Z
Answers.Text: This answer is very short. It is of little use as it tells me nothing about the ..... (word left blank, because I know so little that I can not fill it in).  There is also no link for the first, so I can not even look it up.
Answers.UserDisplayName: ctrl-alt-delor
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-18T19:55:34.317Z
Answers.Text: I'm so used to the fact that repl.it is the name of the product and the url that I forget to link when discussing. Since the topic is "interactive programming environment" I misjudged that the products listed would be interpreted as such. I will agree that it should be further edited to indicate that these products do address the features and usability requested in the original post.
Answers.UserDisplayName: TooManyCooks
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-18T01:29:41.917Z
Answers.LastActivityDate: 2017-12-18T19:32:50.830Z
Answers.LastEditDate: 2017-12-18T19:32:50.830Z
Answers.UserDisplayName: TooManyCooks
Answers.Body: <blockquote>
    <p>I am not too worried about language. I am just looking for a nice
    interactive learning environment, that combines the best of REPL and
    editing. Can you tell me of anything that you use or know of?</p>
  </blockquote>
  
  <p><a href="https://runestone.academy/runestone/static/overview/overview.html" rel="noreferrer">Runestone Academy</a> has a component called <a href="https://runestone.academy/runestone/static/overview/overview.html#activecode-examples" rel="noreferrer">ActiveCode</a> that allows you write Python code and run it. It also has a slider so that you can go back to earlier versions of your source code to review and run.</p>
  
  <p>In addition to activecode, you can also execute Python code with the assistance of a unique visualization tool. This tool, known as <a href="https://runestone.academy/runestone/static/overview/overview.html#the-codelens-tool" rel="noreferrer">codelens</a>, allows you to control the step by step execution of a program. It also lets you see the values of all variables as they are created and modified. </p>
  
  <p>There is a lot more to the web site but is what I use to help others learn Python 3 and the nicest part is that once the students get the hang of the e-books they tend to take off at their own pace.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-14T21:16:58.253Z
Answers.LastActivityDate: 2017-12-14T21:16:58.253Z
Answers.UserDisplayName: Guy Coder
Body: <p>More interactive environments are easier to learn, but the text based ones I have seen lately don't let you change your mind.</p>
  
  <p>I have used Read–Eval–Print Loop (REPL) environments. However these are not suitable, as it is not possible to edit or view code that one wrote earlier.</p>
  
  <pre><code>In [1]: a=5
  
  In [2]: b=a/3
  
  In [3]: b
  Out[3]: 1.6666666666666667
  
  In [4]:
  </code></pre>
  
  <p>they are of some value. However it becomes less useful when creating something big, when creating routines.</p>
  
  <p>I want to be able to create sub-routines interactively, and then be able to inspect them, and edit them. It also needs to be easy enough for teaching beginners.</p>
  
  <pre><code>In [4]: def double(a):
     ...:     return 3*a
     ...:
  
  In [5]: show double
  
      def double(a):
          return 3*a
  </code></pre>
  
  <p><a href="https://i.sstatic.net/NWUad.gif" rel="nofollow noreferrer"><img src="https://i.sstatic.net/NWUad.gif" alt="image showing what happens when user types edit double: editable code apears"></a></p>
  
  <pre><code>In [7]: show --all
  
      def double(a):
          return 3*a
  
      def oneMoreThan(a):
          return a+1
  </code></pre>
  
  <p><strong>I am not too worried about language. I am just looking for a nice interactive learning environment, that combines the best of REPL and editing. Can you tell me of anything that you use or know of?</strong></p>
  
  <p>I will add an answer that shows what I have found, but it is not an acceptable answer as I don't think it is easy enough.</p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-12-29T12:05:21.467Z
Comments.Text: I see you are experimenting with Runestone Academy. It looks like you asked a question from the site but did you know that those questions are turned into GitHub [issues](https://github.com/RunestoneInteractive/RunestoneComponents/issues)? e.g. your question [Add a book of my own to your server](https://github.com/RunestoneInteractive/RunestoneComponents/issues/522)
Comments.UserDisplayName: Guy Coder
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-11-21T17:38:22.370Z
Comments.Text: My gut reaction is that this is off-topic here. How does this relate directly to CS Education? If you were asking about specific pedagogical features of a programming environment, that's a different story (and similar questions have been asked). Also, it seems to me that answers to this question would depend greatly on the language of choice; as is, this is a broad list question.
Comments.UserDisplayName: Peter
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-11-21T17:42:48.473Z
Comments.Text: I am looking for a resource, for teaching programming. It needs to reduce barriers to learning. The feature I mention in the question would reduce barriers. More interactive environments are easier to learn, but the text based ones I have seen lately don't let you change your mind.
Comments.UserDisplayName: ctrl-alt-delor
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-11-21T19:43:04.613Z
Comments.Text: You seem to want to retain the features of REPL but also have a full featured development environment. I don't understand why that has to be the same program. Why not use one of each for their strengths? Certainly if you do something interesting in, say, Idle, you can copy and paste it into a full environment with file management, compilation, execution, etc.
Comments.UserDisplayName: Buffy
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-11-21T21:45:11.553Z
Comments.Text: @Buffy That is what I do, but this morning when I woke up, I had this idea that we can have both. And that it would be of grate value in teaching.
Comments.UserDisplayName: ctrl-alt-delor
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-11-21T21:48:14.417Z
Comments.Text: Jupyter notebooks (formally known as IPython notebooks) springs to mind, but given you posted an answer using IPython, I'm assuming you're already familiar with these? If not, if you already have jupyter installed, it's as easy as running `jupyter notebook` from the command line (or, if you're using an older version of the program back when it was called IPython, run `ipython notebook`).
Comments.UserDisplayName: Michael0x2a
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-11-21T21:59:19.417Z
Comments.Text: @Michael0x2a no. I know nothing, what I put in my answer is from some research I did today. So please put an answer for me and anyone else.
Comments.UserDisplayName: ctrl-alt-delor
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-11-22T04:40:52.287Z
Comments.Text: Have you looked at scratch?  I just stayed my son on it and he's enjoying it immensely.
Comments.UserDisplayName: pojo-guy
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-11-22T06:32:36.527Z
Comments.Text: @pojo-guy I am looking for text based. I do teach scratch already.
Comments.UserDisplayName: ctrl-alt-delor
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-11-22T12:44:42.340Z
Comments.Text: Why not just go to any IDE and"real" projects then? I initially learned BASIC on a teletype, so an IDE after some beginnings in Scratch seems like a huge improvement.
Comments.UserDisplayName: pojo-guy
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-11-22T16:48:54.450Z
Comments.Text: @pojo-guy we sold the tele-types last year; we now use video display terminals. I thought we should take advantage of them. see https://www.youtube.com/watch?v=8pTEmbeENF4
Comments.UserDisplayName: ctrl-alt-delor
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-11-23T14:27:37.217Z
Comments.Text: With Prolog you can always inspect the source code using `listings/1` or `listings/0` predicates. You can also modify them using `assert` / `retract` (more info here: http://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse48 ). I'm using Prolog (SWI) from Emacs, but there must be other editors, perhaps less scary to beginners. SWI also has `qsave_program/2` to save program image, but I don't think it's ISO Prolog. Lisps typically offer the same, but some source code entered interactively may be actually lost.
Comments.UserDisplayName: wvxvw
Tags: <resource-request><programming-environment>
Title: Search for a useful interactive programming environment
ThreadText: # Search for a useful interactive programming environment
  
  (Asked by: username_0 on 2017-11-21)
  
  More interactive environments are easier to learn, but the text based ones I have seen lately don't let you change your mind.
  
  I have used Read–Eval–Print Loop (REPL) environments. However these are not suitable, as it is not possible to edit or view code that one wrote earlier.
  
  ```
  In [1]: a=5
  
  In [2]: b=a/3
  
  In [3]: b
  Out[3]: 1.6666666666666667
  
  In [4]:
  
  ```
  
  they are of some value. However it becomes less useful when creating something big, when creating routines.
  
  I want to be able to create sub-routines interactively, and then be able to inspect them, and edit them. It also needs to be easy enough for teaching beginners.
  
  ```
  In [4]: def double(a):
     ...:     return 3*a
     ...:
  
  In [5]: show double
  
      def double(a):
          return 3*a
  
  ```
  
  [![image showing what happens when user types edit double: editable code apears](https://i.sstatic.net/NWUad.gif)](https://i.sstatic.net/NWUad.gif)
  
  ```
  In [7]: show --all
  
      def double(a):
          return 3*a
  
      def oneMoreThan(a):
          return a+1
  
  ```
  
  **I am not too worried about language. I am just looking for a nice interactive learning environment, that combines the best of REPL and editing. Can you tell me of anything that you use or know of?**
  
  I will add an answer that shows what I have found, but it is not an acceptable answer as I don't think it is easy enough.
  
  **Tags:** resource-request, programming-environment
  
  > **Comments:**
  > **username_2**: My gut reaction is that this is off-topic here. How does this relate directly to CS Education? If you were asking about specific pedagogical features of a programming environment, that's a different story (and similar questions have been asked). Also, it seems to me that answers to this question would depend greatly on the language of choice; as is, this is a broad list question.  
  > **username_0**: I am looking for a resource, for teaching programming. It needs to reduce barriers to learning. The feature I mention in the question would reduce barriers. More interactive environments are easier to learn, but the text based ones I have seen lately don't let you change your mind.  
  > **username_3**: You seem to want to retain the features of REPL but also have a full featured development environment. I don't understand why that has to be the same program. Why not use one of each for their strengths? Certainly if you do something interesting in, say, Idle, you can copy and paste it into a full environment with file management, compilation, execution, etc.  
  > **username_0**: @username_3 That is what I do, but this morning when I woke up, I had this idea that we can have both. And that it would be of grate value in teaching.  
  > **username_4**: Jupyter notebooks (formally known as IPython notebooks) springs to mind, but given you posted an answer using IPython, I'm assuming you're already familiar with these? If not, if you already have jupyter installed, it's as easy as running `jupyter notebook` from the command line (or, if you're using an older version of the program back when it was called IPython, run `ipython notebook`).  
  > **username_0**: @username_4 no. I know nothing, what I put in my answer is from some research I did today. So please put an answer for me and anyone else.  
  > **username_5**: Have you looked at scratch?  I just stayed my son on it and he's enjoying it immensely.  
  > **username_0**: @username_5 I am looking for text based. I do teach scratch already.  
  > **username_5**: Why not just go to any IDE and"real" projects then? I initially learned BASIC on a teletype, so an IDE after some beginnings in Scratch seems like a huge improvement.  
  > **username_0**: @username_5 we sold the tele-types last year; we now use video display terminals. I thought we should take advantage of them. see https://www.youtube.com/watch?v=8pTEmbeENF4  
  > **username_6**: With Prolog you can always inspect the source code using `listings/1` or `listings/0` predicates. You can also modify them using `assert` / `retract` (more info here: http://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse48 ). I'm using Prolog (SWI) from Emacs, but there must be other editors, perhaps less scary to beginners. SWI also has `qsave_program/2` to save program image, but I don't think it's ISO Prolog. Lisps typically offer the same, but some source code entered interactively may be actually lost.  
  > **username_1**: I see you are experimenting with Runestone Academy. It looks like you asked a question from the site but did you know that those questions are turned into GitHub [issues](https://github.com/RunestoneInteractive/RunestoneComponents/issues)? e.g. your question [Add a book of my own to your server](https://github.com/RunestoneInteractive/RunestoneComponents/issues/522)  
  
  ---
  
  ## 7 answers
  
  ### Answer by username_1 on 2017-12-14. Score: 5 | Accepted answer
  
  > I am not too worried about language. I am just looking for a nice
  > interactive learning environment, that combines the best of REPL and
  > editing. Can you tell me of anything that you use or know of?
  
  [Runestone Academy](https://runestone.academy/runestone/static/overview/overview.html) has a component called [ActiveCode](https://runestone.academy/runestone/static/overview/overview.html#activecode-examples) that allows you write Python code and run it. It also has a slider so that you can go back to earlier versions of your source code to review and run.
  
  In addition to activecode, you can also execute Python code with the assistance of a unique visualization tool. This tool, known as [codelens](https://runestone.academy/runestone/static/overview/overview.html#the-codelens-tool), allows you to control the step by step execution of a program. It also lets you see the values of all variables as they are created and modified.
  
  There is a lot more to the web site but is what I use to help others learn Python 3 and the nicest part is that once the students get the hang of the e-books they tend to take off at their own pace.
  
  
  ---
  
  ### Answer by username_7 on 2017-12-06. Score: 4
  
  Expanding on [hotpaw2's answer](https://cseducators.stackexchange.com/a/4003):
  
  **If you have a Mac**, you can use Swift Playgrounds in Xcode.
  
  It allows you to type code and see the results immediately, like this:
  
  [![Swift Playgrounds Example](https://i.sstatic.net/IHKeE.png)](https://i.sstatic.net/IHKeE.png)
  
  It only supports Swift, Apple's new language for making Mac and iOS applications. You can find out more about it over [here](https://swift.org). It's a good language for small things like learning programming, but it scales up to entire applications.
  
  This all comes with [Xcode](https://developer.apple.com/xcode), which you can download for free [from the App Store](https://itunes.apple.com/us/app/xcode/id497799835?mt=12).
  
  > **Comments:**
  > **username_0**: I am only looking for Free/Libre Software, but I will look at this to see what it offers.  
  > **username_7**: Ah, sorry, can't help you there. Swift itself is Apache-licensed, but Xcode is not. (If only... :( )  
  > **username_0**: So do we need Xcode to run Swift?  
  > **username_7**: No, you don't. You need Xcode to run the playgrounds or build Mac/iOS apps, but Swift itself will work just fine without it--even on Linux! (You can still use a REPL or compile it into an executable.)  
  > **username_7**: Note that on Mac, you're better off getting Xcode anyway, as it comes with the compiler, etc. (If you try to run clang/gcc without it, it'll prompt you to install the Command Line Tools, which contains the compiler, etc. but not the Xcode GUI.)  
  > **username_7**: Also, on Linux, it will have most but not all of the Foundation API, as the Objective-C runtime is not part of the open-source project. (So `String` but no `NSString`, for example.)  
  
  ---
  
  ### Answer by username_8 on 2017-11-25. Score: 2
  
  In addition to Racket, check out drjava for Java and drpython for Python.
  
  For Python you can also check out Thonny.
  
  All have a repl section and a code section. Write your definitions in the code section and interact in the repl section.
  
  Emacs can also be configured this way for a whole host of languages.
  
  
  ---
  
  ### Answer by username_10 on 2017-11-21. Score: 1
  
  DrRacket combines a coding window with a REPL environment. It would mean moving out of the imperative paradigm into a functional one, but the setup is really quite nice:
  
  [![enter image description here](https://i.sstatic.net/yyU7E.png)](https://i.sstatic.net/yyU7E.png)
  
  The top window is called the *Definitions Window*, and the bottom is called the *Interactions Window*. Work in the bottom window for as long as you like, but once you have something built up, copy the all-important function definition into the top.
  
  Be warned that when you press the `run` button, the interactions window is cleared. However, you can now freely utilize any functions that have been defined in the top area.
  
  > **Comments:**
  > **username_3**: Since Java has recently added REPL support to the language, I suspect that Eclipse and others will soon have support. That is remarkable for a language like Java, actually.  
  > **username_0**: Will give it a look. As I said I don't care about language. As long as I don't loose something more valuable. However what I rely would like is some way to move `number-checker` from the bottom window to the top, not by pasting, but by asking it to move (e.g. `(show (number-checker))`  or `(clip (number-checker))` to put into clip-board.  
  
  ---
  
  ### Answer by username_11 on 2017-12-18. Score: 1
  
  1. Repl.it [REPL.it](http://repl.it)supports several languages. It also supports manual and automatic testing (unit tests). When students complete task they can see instructor model solution.
  2. Google currently supports Jupyter Notebooks <https://colab.research.google.com> which would allow you some pedagogical tools in terms of embedding code within explanations.
  
  > **Comments:**
  > **username_0**: This answer is very short. It is of little use as it tells me nothing about the ..... (word left blank, because I know so little that I can not fill it in).  There is also no link for the first, so I can not even look it up.  
  > **username_11**: I'm so used to the fact that repl.it is the name of the product and the url that I forget to link when discussing. Since the topic is "interactive programming environment" I misjudged that the products listed would be interpreted as such. I will agree that it should be further edited to indicate that these products do address the features and usability requested in the original post.  
  
  ---
  
  ### Answer by username_0 on 2017-11-21. Score: 0
  
  What I have found so far. I don't think this is suitable for teaching a class of beginners, as it is too complex.
  
  In `ipython`, you can display the code of a function/procedure, variable…, by typing its name followed by two `?`.
  
  ```
  In [10]: double??
  Signature: double(a)
  Source:
  def double(a):
      return a*2
  File:      ~/<ipython-input-8-4a40aa4fc91f>
  Type:      function
  
  In [11]: a=5
  
  In [12]: a??
  Type:        int
  String form: 5
  
  In [13]: %ed double
  
  ```
  
  Now the terminal switches to an editor, when I quit the editor the new definition is invoked, and I return to repl mode.
  
  
  ---
  
  ### Answer by username_9 on 2017-11-27. Score: -1
  
  I can wholeheartedly suggest Xamarin Workbooks:
  <https://developer.xamarin.com/guides/cross-platform/workbooks/>
  
  Awesome, nice UI. You can use it for more than Xamarin, if you are teaching any .NET based class, it is a very valuable tool. There are a couple of sample workbooks avaialable here: <https://developer.xamarin.com/guides/cross-platform/workbooks/samples/>
  
  And the best part is that you can extend it yourself, if you know a little typescript. I've created one a while back to demonstrate how Entity Framework Code First creates the database tables from the defined source code. You can check it out here, if you are interested: <http://dotnetfalcon.com/net-workbooks-entity-framework-model-explorer/>
  
  > **Comments:**
  > **username_0**: Can you tell us a little about it. Tell us what makes it good, in context to the question.  
  > **username_0**: I have looked at their website, and found out nothing about it. I feel like they are trying to herd me toward the pay wall. I just found a link “Tell me more about Xamerin“, it takes to to a page with little info, and a big download button, this button takes me to a sign up page. They need to get their marketing in gear, who would buy something that they can not find out what it is?  
  > **username_9**: I like the nice UI and the extensiblity, as stated in my answer. I also gave an example of how I extended it, but I see other useful ways (e.g. when teaching OO, you can extend it to draw the class diagram at the end). You can also edit the code "on-the-fly" and rerun it, as required by OP.  
  > **username_9**: And here's the page for the installer: https://developer.xamarin.com/guides/cross-platform/workbooks/install/ Just click on the second option and you can download it. Btw. Xamarin is part of any edition of Visual Studio, the Community Edition also, which is for free.  
  > **username_0**: I will not download anything, until I first know why. What is good about Xamarin?  
  > **username_9**: You can use it for more than just Xamarin, as stated in the comments. It's just that the team inside Microsoft that published this tool is the team responsible for Xamarin. You can use it for plain old C# (that's how I use it).  
  
  ---
  
  