RFC: JuliaTutor.jl

Hey all I tried kicking off some of the bones of a SWIRL like package in Julia. Basically you get someone totally new to julia to download a package which hand holds them through various lessons. So they can learn interactively. The goal is just to get someone to be dangerous enough that they could do the basics after completing the lessons.

The code is pretty messy, because … I don’t have a lot of time for this and am viewing it completely as a prototype right now. But I don’t think I should be the one spear-heading it either. Many of you are way better at writing Julia, and instructing others how to learn Julia.


  • Any suggestions to make the thing better?
  • Anything you’d personally like to see?


  • Contributors are Welcome!
  • Valuable contributions might be things like…
    • how to get REPL activity(left arrow doesn’t work so users will struggle to correct their inputs, etc)
    • Better color schemes
    • cleaner syntax/design(I don’t like how I am including *.jl files as lessons)
      Once that’s squared away we’ll need writers/sharers
  • People to design and make some basic lesson plans
  • Then some exposure… Sharing the tool so people don’t think you need an elite background to use the language effectively.


I am teaching Julia and in general interested in getting people to learn it, so I got interested in your post. However, I am confused as to how I can give you feedback or in fact learn something about the project.

In your post there isn’t any code example or any actual usage example, but only abstract terms “you guide someone to learn interactively”, while the repo has no hosted documentation.

Am I missing something, some doc somewhere? Or your intention was that we’d have to look at the source code to provide feedback/ideas? Just looking to clarify.


The intention was sloppy :rofl:. I am crushed with responsibilities right now.
Readme is now better. DocStrings have been added.

Really all you do is the following

using Pkg
using JuliaTutor


I’m interested in things like this as well. Maybe one could use REPLMaker to get a full REPL functionality? Although the basics seem to work. As a side note, I personally find starting with Hello World and printing boring and would always try to get something captivating going as fast as possible. Something that is already a tiny bit cool and useful


Good points jules. I wanna start with Hello World then jump to pipes in the same lesson, and string concatenation.

Never heard of REPLMaker? Was just about to rip up REPL.jl and take what I wanted from there. But yea that sounds awesome! Feel free to make PR’s or suggestions. I’ll only be working on this sporadically

1 Like

After doing some digging I’ve found that I don’t think it’s possible to do what I’d want to do here. (get a REPL input rather then a readline)… if I get the interactivity from a REPL input, I can’t capture the output correctly, etc. Should I start a thread asking for help elsewhere?

I tried this out the other day and it worked pretty well. I made a repl mode that just parses the input string and compares the expression entered to the current “wanted” expression. Then you can return whatever you want really, if they match you can eval the expression and do whatever with the output before you return it.

You can make the repl mode so that you can’t submit stuff that has incorrect syntax, which is also really handy. In that case you just get a line break

1 Like

I’ll keep tinkering with REPLMaker. I’m probably just doing something dumb, like making a new instance or something along the lines…

You don’t need repl maker per se, I just looked at the source (100loc or so) and took the parts that I wanted. It’s for example not useful for the tutor thing to assign a letter and make it a “real” repl mode, but you can still activate it via a function. Maybe I can put my code up later if I find it again :slight_smile:

1 Like

Basically all I want is a readline() that let’s you use the arrowkeys to navigate. The REPL thing is a bit of extra (but awesome) machinery, I may try and grok it/REPL.jl again. But not 100% sure it’s what I want/will work how I want. I’ve been super busy tying up ends on some other stuff + life. I may get to this again this week, but yea if you have any examples of CLI based UI’s that aren’t as rigid as readline sharing them could save me some heart ache.